2010-05-24 5 views
0

У меня есть приложение на C#, которое я пишу некоторые данные в файл. Перед Windows 7 я столкнулся с проблемой: когда я пишу данные до C:\ProgramData, выдается Access denied acception. Если я выхожу из учетной записи администратора, эта проблема исчезнет, ​​и если я войщу в систему с другого аккаунта, у которого есть административные превалирования, эта проблема возникает. Эта проблема возникает только в Windows 7 Professional, она отлично работает на всех других вкусах Windows 7, а также в Vista.Проблема с написанием файла в Windows 7 Professional в 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 
} 

ответ

3

Это нормально, неадминистративные пользователей сделать не иметь доступ на запись в C: \ ProgramData. По умолчанию назначаются только права чтения, выполнения и списка. Это включает учетные записи администратора с включенным UAC.

Папка AppData должна использоваться для записи файлов. Получить путь к этой папке с помощью Environment.GetFolderPath().

+0

спасибо Хансу за вашу помощь. –

+0

Вы уверены? Я тестирую его сейчас в Windows 7, и я могу писать в папку ProgramData, даже если он не работает в учетной записи ограниченного пользователя. Однако, если я попытаюсь записать в папку Program Files, используя тот же тест, он не работает с несанкционированным доступом. –

+0

Да. Ваш комментарий, однако, является общим ответом, который я получаю. Я не могу это доказать, но я уверен, что есть инсталляторы, которые решают общую проблему. При установке Windows по умолчанию существует * каталог * no *, с которым * все пользователи имеют доступ на запись. Cue в «ProgramData, ах, вот где программы хранят свои данные!» Затем они обнаруживают, что это не так. Поэтому они решают свою проблему, если установщик делает каталог ProgramData доступным для записи для всех пользователей. Boomshakalaka. –