Доступ запрещен при создании каталога с использованием C # - PullRequest
0 голосов
/ 03 июля 2011
string windowsDirectory = Environment.GetEnvironmentVariable("ProgramFiles");
string mydirecoty = windowsDirectory + "\\" + "NetServices\\";

if (!Directory.Exists(mydirecoty))
  {
    Directory.CreateDirectory(mydirecoty); //Access to the path 'C:\Program Files (x86)\NetServices\' is denied.
  }

Исключение выдается при запуске приложения .net без учетной записи администратора. Хотя, если я пытаюсь создать каталог в другом, то диск C:\, например, D:\, работает нормально.

Какое решение я хочу создать в папке Program Files/ Windows?

Ответы [ 5 ]

5 голосов
/ 03 июля 2011

Папка C:\program files защищена (в соответствии с дизайном) в Vista и Windows 7 (и Windows Server 2008/2008 R2) - обычные учетные записи пользователей не имеют каких-либо разрешений для создания там каталогов - это системная папка.

Либо вам нужно работать как admin - тогда у вас есть разрешение на создание каталогов даже в защищенных системных папках - либо вы создаете каталоги в другом месте, а не внутри защищенной системной папки. Второй вариант будет рекомендуемым и предпочтительным вариантом.

0 голосов
/ 03 июля 2011

если вы используете операционные системы выше Windows XP, вы не сможете получить доступ к C: \ PrpgramFiles, защищенному при чтении и записи, если только AVII ваше приложение не имеет прав администратора.

Пока

0 голосов
/ 03 июля 2011

если вы запускаете это из веб-приложения, убедитесь, что у пользователя пула приложений есть разрешение ntfs для этой папки.

0 голосов
/ 03 июля 2011

Если ваше приложение предназначено для запуска пользователем, запишите в папку данных приложения пользователя или временную папку.Ваше приложение должно установить в каталог Program Files и, возможно, использовать некоторые файлы в каталоге Windows, но оно никогда не должно записывать в любое место.Вы можете легко получить папку daa приложения пользователя из переменных среды.

0 голосов
/ 03 июля 2011

Вам необходимо повысить привилегии пользователя, так как это функция в Windows Vista / 7. Запуск от имени администратора решит проблему.

...