Требование к разрабатываемому мной приложению - возможность установить плагин для внешней программы. Установка плагина заключается в перетаскивании dll в каталог плагинов. Проблема в том, что каталог плагинов находится в папке Program Files (x86). При попытке записи в него через File.WriteAllBytes я обнаружил исключение UnauthorizedAccessException.

  • Эта ошибка возникает, даже если программа запускается от имени администратора.
  • Я попытался изменить свой манифест до уровня requireAdministrator.
  • Я также попытался создать новый процесс с помощью runas.

Как я могу перетащить свою dll в папку внутри Program Files (x86)?

c#
-4
Tim 8 Сен 2016 в 08:07

3 ответа

Лучший ответ

Я глуп. Я указал каталог внутри Program Files, в который я писал, но не включил имя файла в путь. Исключение UnauthorizedAccessException сбило меня с толку.

0
Tim 8 Сен 2016 в 05:27

Я думаю, что ваша учетная запись, которая используется для входа в Windows и начала программирования с ней, не является реальной учетной записью администратора.

Попробуйте проверить права своей учетной записи и запустить Visual Studio в режиме администратора и посмотреть, сможете ли вы писать в режиме отладки.

Проверьте это и дайте результат.

0
Hamed_gibago 8 Сен 2016 в 05:21

Попробуйте добавить

[PermissionSet(SecurityAction.Demand, Name="FullTrust")]

Над вашим методом, который включает в себя операции ввода-вывода. F / E, следующее копирует myFile в каталог программных файлов:

[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public void copyFile(string myFile){
    System.IO.File.Copy(myFile,Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
}
1
Shannon Holsinger 8 Сен 2016 в 05:09