繁体   English   中英

HKEY_CURRENT_USER不会发生注册表重定向

[英]Registry redirection does not happen for HKEY_CURRENT_USER

我有以下代码:

RegistryKey objRegKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\MySettings\\Dwm\\Preferences", true);

我在以下位置存在注册表项: HKEY_CURRENT_USER\\SOFTWARE\\MySettings\\Dwm\\Preferences ,因此可以正常工作。

当我更改以上代码以从本地计算机而不是当前用户读取时:

RegistryKey objRegKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\MySettings\\Dwm\\Preferences", true);

并在以下位置创建以下注册表: HKEY_LOCAL_MACHINE\\SOFTWARE\\MySettings\\Dwm\\Preferences

该代码返回null。 我了解原因是由于对64位OS上的32位应用程序进行注册表重定向,因此它尝试从以下位置读取注册表: HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432NODE\\MySettings\\Dwm\\Preferences并且由于注册表不存在,因此它返回null 。 问题是,为什么仅对HKEY_LOCAL_MACHINE而不对HKEY_CURRENT_USER进行重定向?

注册表重定向不是一个二进制选项-是否存在。 有时,您希望 32位和64位应用程序对注册表(的一部分)具有相同的“视图”,而在其他情况下,则不需要。

这就是为什么记录了受重定向影响的特定的原因。 HKEY_CURRENT_USER本身是共享的, HKEY_CURRENT_USER\\Software也是共享的。 但是, HKEY_CURRENT_USER\\Software\\Classes\\CLSID包含COM组件注册数据(必须进行32/64位拆分),它确实执行重定向。

或者,换句话说,如果注册表重定向是通用的,则不需要所有涉及Wow6432Node等的卷积。您只需拥有32位注册表和64位注册表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM