2010-05-24 17 views
0

J'ai une application en C# dans laquelle j'écris des données. Je suis confronté au problème sur Windows 7 professionnel que lorsque j'écris des données à C:\ProgramData, accès refusé acception est levée. Si je me connecte à partir d'un compte administrateur, ce problème disparaît, et si je me connecte à partir d'un autre compte qui a des prévilages administratifs, ce problème survient. Ce problème ne se produit que sur Windows 7 Professionnel, il fonctionne bien sur tous les autres goûts de Windows 7 ainsi que Windows Vista.Problème d'écriture de fichier sous Windows 7 Professionnel dans C#

try 
{ 
XmlTextWriter myXmlTextWriter = new XmlTextWriter("Configuration.xml", null); 
      myXmlTextWriter.Formatting = Formatting.Indented; 
      myXmlTextWriter.WriteStartDocument(true); 
      myXmlTextWriter.WriteDocType("ApplicationConfigurations", null, null, null); 
      ////myXmlTextWriter.WriteComment("This file represents another fragment of a book store inventory database"); 
      myXmlTextWriter.WriteStartElement("Configuration"); 
      myXmlTextWriter.WriteElementString("firstElement", pe.ToString()); 
      myXmlTextWriter.WriteEndElement(); 

      myXmlTextWriter.WriteEndDocument(); 
      myXmlTextWriter.Flush(); 
      myXmlTextWriter.Close(); 
}catch(Exception e) 
{ 
    //Exception is thrown in Win7 professional 
} 

Répondre

3

Ceci est normale des comptes, l'utilisateur non-admin ne pas ont accès en écriture à c: \ ProgramData. Seuls les privilèges Lire, Exécuter et Lister sont attribués par défaut. Cela inclut les comptes d'administrateur avec UAC activé.

Le dossier AppData doit être utilisé pour écrire des fichiers. Obtenez le chemin d'accès à ce dossier avec Environment.GetFolderPath().

+0

remercie Hans pour votre aide. –

+0

Etes-vous sûr? Je le teste maintenant sur Windows 7 et je peux bien écrire dans le dossier ProgramData même si je ne suis pas sur un compte limité. Toutefois, si j'essaie d'écrire dans le dossier Program Files en utilisant le même test, il échoue avec un accès non autorisé. –

+0

Oui. Votre commentaire est cependant une réponse commune que je reçois. Je ne peux pas le prouver, mais je suis à peu près certain qu'il existe des installateurs qui résolvent un problème commun. Dans l'installation par défaut de Windows, il y a * aucun * répertoire auquel tous les utilisateurs ont accès en écriture. Cue dans "ProgramData, ah, c'est là que les programmes stockent leurs données!" Ensuite, ils découvrent que ce n'est pas le cas. Ils résolvent donc leur problème en demandant au programme d'installation de rendre le répertoire ProgramData accessible en écriture pour tous les utilisateurs. Boomshakalaka. –