Вопрос по permissions, .net, c# – проблема разрешения записи файла в папке «Program Files»

15

Я использую inno setup для создания установочного пакета для моего приложения, и мое приложение написано на C # + .Net 2.0 + VSTS 2008. Inno setup = & gt;http://www.jrsoftware.org/isinfo.php и я устанавливаю свое приложение в папке Program Files / Foo (Foo - это имя моего приложения). Мое приложение ориентировано на Windows Vista.

Проблема, которую я обнаружил, заключается в том, что моя программа не может записать в папку Program Files / Foo. И мне нужно разрешение на запись в эту папку, чтобы сохранить некоторые файлы конфигурации. Странная вещь, которую я замечаю, это то, что папка Program Files / Foo помечена как доступная только для чтения, и я проверил, что все папки в разделе Program Files помечены только для чтения, например Office.

Мои вопросы

  1. Why all folders are marked as read only under Program Files? It means we should not write to individual application folders under Program Files? If not, where should we write information to disk like user last selected configuration information of an individual application?
  2. If we could write to individual application folders under Program Files, what is the solution? I do not want my application to Run As administrator to solve this issue, and if there are solution to write to this folder, I want to require minimal permission if possible.

Ваш Ответ

3   ответа
12

есто этого сохраните данные своего приложения в папке% AppData% \ YourApplicationName. В зависимости от того, хотите ли вы сохранить свои данные конфигурации для каждого пользователя или в общей общей папке, используйте одно из следующих перечислений, чтобы получить путь к папке:

string userAppData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);  
string commonAppData = Envrionment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 

По умолчанию пользователи Vistado not запускать программы от имени администратора и, следовательно, эти программыonly read access в папки в разделе «Программные файлы». Пользователи могут изменить это поведение, отключив UAC, и выcould попросите своих пользователей сделать это, но в настройках офиса у пользователей может не быть такой опции. Вот почему вы вместо этого используете AppData - приложения всегда могут прочитатьand записать данные в папку AppData.

Информация о UAC может быть найдена на сайте Microsoft. Хотя эта страница довольно длинная, она является отправной точкой для понимания UAC: http://msdn.microsoft.com/en-us/library/bb530410.aspx

6

у Application Data, то есть следующим образом:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Отдельная папка приложения под Program Files не предлагается писать? какие-либо опубликованные рекомендации? George2
14

у Application Data для текущего пользователя, используяenum специальные папки иEnivronment.GetFolderPath.

Это прогулка вокруг. :-) Если для Windows Vista, какие-либо опубликованные рекомендации или рекомендации, что мы должны хранить данные в AppData? George2
microsoft.com/downloads/…
Очень хорошие вещи! Вопрос решен. George2
Windows XP - рекомендации для приложений
Отдельная папка приложения под Program Files не предлагается писать? какие-либо опубликованные рекомендации? George2

Похожие вопросы