【发布时间】:2012-01-13 15:30:54
【问题描述】:
我见过几个与此相反的问题; “如何禁用虚拟化?”那不是我的问题。我想强制应用程序在启用虚拟化的情况下运行。
我有一个在 Windows XP 下运行良好的应用程序,但是,因为它将其配置写入其工作目录(“C:\Program Files (x86)”的子文件夹),它不能在 Windows 7 下完全运行. 如果我使用任务管理器打开 UAC 虚拟化,它会很好地保存它的配置,但当然它不能加载该配置。
我不想将其设置为以管理员身份运行,因为它不需要这些权限。我想将其设置为在启用 UAC 虚拟化的情况下运行。
我found a suggestion 在HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags 的注册表中添加了一些魔法。为了完整起见,我还把它放在了Wow6432Node,但都没有任何效果。
【问题讨论】:
-
为什么不能只更改应用以将配置文件保留在 AppData 中?
-
@KateGregory 的建议,或者修改文件夹上的 ACL,让 everyone 拥有完全控制权。问题是,并非所有类型的写入都将始终被虚拟化。这是一个权宜之计功能,可以阻止有缺陷的程序崩溃。这真的不是你应该依赖的东西。事实上,可以通过组策略禁用虚拟化——不管你是否愿意。
-
@KateGregory:我没有消息来源。如果我有来源,我会使用它,而不是依赖权宜之计功能的糟糕解决方法。
-
@IanBoyd 修改 ACL 以破坏我通过打开 UAC 运行获得的安全性?我不这么认为。组策略不禁止在我的机器上进行虚拟化(“用户帐户控制:虚拟化文件和注册表...”已启用),因此这不适用于我,尽管它可能适用于其他人。 (我最终放弃了,只修改了配置文件上的ACL。这确实解决了原来的问题,并且没有打开任何安全漏洞,但它没有回答原来的问题。)
标签: uac