我有一个C#
程序(VS2010),它将值写入我们创建的几个HKEY_CURRENT_USER
注册表项中。通常这在Win XP, Vista, and 7, x86 and x64
上工作正常。但是在某些机器上,键不会被写入。没有异常抛出,键和值之后就不存在了。
我们正在拔出头发试图弄清楚为什么会发生这种情况。它真的是零星的...在一台机器上它不起作用 - 但它可以在同一办公室或域中的所有其他机器上工作。
我们应该寻找什么?
答案 0 :(得分:0)
你所描述的内容听起来很像微软的Registry Virtualization。
但是,据我所知,这仅适用于32位应用程序的HKEY_LOCAL_MACHINE \ Software。
注册表虚拟化是在Windows Vista中引入的,旨在提供与未使用Vista的UAC编写的应用程序的向后兼容性。我们的想法是将注册表操作重定向到通常会影响注册表敏感区域(如HKLM)的特定位置,其中唯一的影响将是当前用户。它应该也可以向后工作 - 当访问注册表的其中一个部分时,它会检查重定向的位置,然后才能找到一个不存在的密钥。