J'ai testé mon application pour voir si elle fonctionne correctement lorsqu'elle est exécutée par un utilisateur non-administrateur et j'ai rencontré des problèmes de gestion de fichiers. Je reçois une exception UnauthorizedAccessException en essayant d'écraser un fichier, si le fichier a été créé par et administrateur.Gestion des fichiers avec un utilisateur non-administrateur
Lors de l'écriture du fichier, je crée d'abord le fichier en tant que fichier .tmp, puis j'utilise File.Copy pour écraser l'original. Le fichier .tmp est créé, mais File.Copy échoue. Mes fichiers sont écrits dans un répertoire public ("C: \ Documents and Settings \ Tous les utilisateurs \ Application Data" dans XP).
Que puis-je faire pour que tous les utilisateurs puissent avoir un contrôle total sur les fichiers de l'application?
J'ai trouvé ceci:
System.Security.AccessControl.DirectorySecurity sec =
System.IO.Directory.GetAccessControl (directory);
FileSystemAccessRule accRule = new FileSystemAccessRule (Globals.userIdentity,
FileSystemRights.FullControl, AccessControlType.Allow);
sec.AddAccessRule (accRule);
Will faire ce qui précède dans le répertoire que tous les fichiers se trouvent dans résoudre ce problème? Ou devrais-je faire quelque chose pour chaque fichier? Si oui, quel est ce quelque chose?
Edit:
utilisateurs non administrateurs ne peuvent pas modifier les fichiers créés par un utilisateur admin. Ce n'est pas bien. J'ai besoin que tous les fichiers soient modifiables par tous les utilisateurs. N'existe-t-il pas une sorte d'autorisation qui peut être définie lors de la création initiale du fichier?
Certains fichiers peuvent nécessiter un accès depuis l'extérieur de l'application. Puisque c'est le cas, que dois-je faire? –
Vous pouvez essayer d'utiliser le dossier Application Data de l'utilisateur. Par défaut, ils devraient y avoir accès sans être administrateur. Vous pouvez obtenir ce chemin pour un utilisateur avec Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData) Cela signifie que les données d'application ne sont pas partagées entre les utilisateurs. HTH. –
Les données d'application doivent être partagées pour tous les utilisateurs.C'est pourquoi j'utilise le répertoire All Users \ Application Data. C'est juste que les fichiers créés lors de la connexion en tant qu'utilisateur admin ne peuvent pas être modifiés par des utilisateurs non-administrateurs. –