我有一个32位程序试图在运行Windows 8.1的Windows 64位安装程序中访问存储在HKLM \ Software \ Microsoft \ VisualStudio中的密钥。
通常它工作得很好,它实际上会从Software \ Wow6432Node读取该密钥。
但是我有一台机器(看起来与其他机器不同),读取失败。当我查看使用Process Monitor的注册表访问时,它表明它正在尝试从VirtualStore读取它,并且它不存在,因此失败。
Windows没有像我在其他安装中那样向我的应用程序展示合并视图的原因吗?
谢谢, 马努
答案 0 :(得分:1)
虚拟存储是UAC引入的兼容机制,与WOW64没有直接关系。如果未声明自身与Windows Vista兼容的程序尝试创建密钥或文件但无权访问,则Windows会将写入重定向到虚拟存储中。从那时起,打开该密钥或文件的尝试将自动重定向到虚拟商店。
为避免被重定向到另一个应用程序可能创建的虚拟商店密钥或文件,请使用清单声明您的应用程序与Windows Vista兼容。