J'ai entendu des questions sur le fait de contourner cette fonction de sécurité de Windows 7 auparavant, mais j'ai NO DESIRE pour le faire. Ma question concerne la configuration du programme de sorte qu'il dispose de «droits d'accès» aux fichiers d'un répertoire particulier.Comment modifier un fichier dans Program Files avec Win7 (droits de sécurité dans un répertoire?)
C# Windows Forms, .NET 2010 Express
J'ai un programme qui est censé lire, écrire et éditer divers fichiers, y compris les fichiers de données du profil utilisateur.
Maintenant, pour diverses raisons, tous ces fichiers n'existeront pas pendant l'installation du programme (j'ai créé un programme d'installation MSI). Principalement, un nouveau fichier est créé pour chaque utilisateur et les utilisateurs ne sont pas connus au moment de l'installation. Je viens de passer à une machine Windows 7, et j'ai eu un vrai cauchemar en essayant de mettre à jour ces fichiers lors de l'exécution. J'ai été amené à croire (dans diverses autres chasses Q/A) que les fichiers installés par le MSI seront "liés" au programme, et Windows laissera le programme éditer ces fichiers sans se plaindre. Depuis que j'ai démarré sous Windows XP, je n'ai jamais pris la peine d'inclure ces fichiers de configuration avec le MSI. Je voulais poursuivre mes recherches avant de tout réorganiser.
Question 1: Est-ce exact? Je ne l'ai jamais vu explicitement déclaré ou demandé. Les fichiers MSI installés obtiendront l'autorisation de lecture/écriture dans le programme?
. Donc, avec cet arrière-plan en tête, j'aimerais savoir s'il existe un moyen d'autoriser n'importe quel fichier à être CRUD-ed, tant qu'il reste dans le répertoire d'application tel que défini par le fichier MSI. Je suis prêt à définir des répertoires spéciaux "permission", ou tout ce qui est nécessaire.
L'autre solution (stupide-simple) consiste à installer le programme en dehors du répertoire Program Files, mais cela semble imprudent.
Question 2: Comment les droits d'accès d'un programme peuvent-ils être configurés pour autoriser le fichier CRUD, même s'il est limité à un répertoire particulier?
.
Merci de partager vos commentaires!^_^
OK Je comprends ce que vous dites, mais je lis depuis 2 heures maintenant et je ne vois toujours pas comment implémenter * votre suggestion ... Quelle couche/langue est-ce que cela se passe? J'ai l'impression que ça se passe au niveau SHELL ... J'essaie d'accéder aux choses au niveau .NET, * System.IO * ...Avons-nous mal communiqué, ou suis-je sous-éduqué sur les procédures d'E/S de fichier? –
@Tinkerer appelle 'Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData)' pour obtenir l'emplacement du dossier de données de l'application commune. –