我的应用程序包含一个用于更新应用程序的自我更新程序可执行文件。
更新程序执行的第一步是检查它是否具有对应用程序文件夹的写入权限
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:如果我使用“以管理员身份运行”运行相同的代码,它工作正常