мое приложение включает исполняемый файл самообновления, который используется для обновления приложения.
Одним из первых шагов, выполняемых программой обновления, является проверка наличия у нее прав на запись в папку приложения.
IPermission perm = new FileIOPermission(FileIOPermissionAccess.AllAccess, _localApplicationCodebase);
if (!SecurityManager.IsGranted(perm))
{
OnProgressChanged("Security Permission Not Granted \n The updater does not have read/write access to the application's files (" +
_localApplicationCodebase + ")",MessageTypes.Error);
return false;
}
OnProgressChanged("Updater have read/write access to local application files at " + _localApplicationCodebase);
return true;
При выполнении под Win7 / Vista этот код проходит (это означает, что, согласно CAS, у кода есть доступ на запись), однако, когда я пытаюсь записать файлы, я получаю отказ в доступе (и я подтвердил, что файлы НЕ используются)
Я понимаю, что Vista / Win7 UAC не позволяет пользователям записывать файлы в папки программных файлов. Однако я не понимаю, почему разрешение предоставляется, если на самом деле это не так.
С уважением,
Эрик Жирар
PS: Если я запустил тот же код с помощью «Запуск от имени администратора», он будет работать нормально.