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