UAC与数据虚拟化(低权限无法正常写系统目录和注册表)

当此应用程序向系统位置(如 %programfiles% 文件夹)写入内容时,Windows Vista 会将写入操作和读取操作重定向到用户配置文件文件夹 (%localappdata%\VirtualStore) 中的用户特定位置。默认情况下,此位置为 C:\Users\User_name\AppData\Local\VirtualStore\Program Files\Application_name

注册表虚拟化的工作原理与之类似,但应用于 HKEY_LOCAL_MACHINE\SOFTWARE 子树下的注册表项。此子树下的注册表项和数据重定向到HKEY_CURRENT_USER\Software\Classes\VirtualStore子项。

有关更多信息,请访问下面的 Microsoft 网站:



-------------写文件到programfiles-------------------------------


一 不带manifest的 应用程序显示了文件重定向到VirtualStore文件夹。

二带manifest的 应用程序,从而使它支持UAC。文件没有被重定向,而是当对Program Files文件进行写入操作时将会被阻止并引起“拒绝访问”错误。

三 最后,您将对应用程序进行修改,即将文件存储到应用程序数据(ProgramData)文件夹,来解决这一问题。

总结,programfiles文件夹只有管理员权限可以写,我们应该使用SHGetKnownFolderPath函数获得将要写入的路径(FOLDERID_ProgramData:所有用户共享;FOLDERID_LocalAPPData:当前用户,FOLDERID_RoamingAPPData:当前用户

如果SHGetKnownFolderPath不起作用,则使用环境变量%ALLUSERSPROFILE%,%LOCALAPPDATA%,%APPDATA%(这3个与上面提到的3个对应关系,而后两个在vista之后才有)

任务管理器可以查看虚拟化是否开启

Window 7 开发:UAC数据重定向 - Win32 Native



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值