мое приложение включает в себя исполняемый файл самообновления, который используется для обновления приложения.Запись доступа к папке Program Files
Одним из первых шагов обновления выполняет, чтобы проверить, что у него есть разрешение на запись в папку приложения
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, код имеет доступ на запись), однако, когда я пытаюсь записать файлы, у меня есть Access Denied (и я подтвердил, что файлы НЕ используются)
Я понимаю, что Vista/Win7 UAC мешает пользователям записывая файлы в папки программных файлов. Однако то, что я не понимаю, почему разрешение выдается, если на самом деле это не
С уважением,
Eric Girard
PS: Если я запускаю тот же код, используя «Run As Administrator» , он отлично работает
ли приложение пытается перезаписать себя в то время как он работает? –
Как я уже писал, нет, обновление не является другим .exe, так как никаких зависимостей от какой-либо локальной dll –
Я считаю, что если вы не являетесь администратором, вам не разрешается писать какой-либо исполняемый файл в любых программных файлах вложенная папка. Ваш updater пытается написать исполняемые файлы? –