2011-03-06 2 views
0

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!^_^

Répondre

1

Question 1: Non, ce n'est pas correct. Il n'y a rien de spécial à propos d'un fichier installé par MSI.

Question 2: N'essayez pas d'écrire des fichiers de paramètres d'application dans le répertoire Program Files. Au lieu de les mettre dans CSIDL_COMMON_APPDATA - voir SHGetFolderPath.

Vous devriez vraiment essayer de sortir de l'habitude d'écrire dans le répertoire Program Files à tout moment autre que l'installation. C'est pourquoi le système fournit les différents autres special folder locations.

+0

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? –

+0

@Tinkerer appelle 'Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData)' pour obtenir l'emplacement du dossier de données de l'application commune. –

Questions connexes