在C#中访问注册表

时间:2011-08-16 08:01:21

标签: c# .net registry

我尝试访问我知道存在的特定注册表项。我用这种方式:

 RegistryKey rk = Registry.LocalMachine; 
 RegistryKey sk1 = rk.OpenSubKey(KeyName,false);

如果我用 @“Software \ Microsoft \ Windows \ CurrentVersion \ Run”替换'KeyName',它可以正常工作。
如果我尝试从regedit粘贴的任何其他路径,例如 @“SOFTWARE \ ATI Technologies \ Install \ South Bridge \ ATI_AHCI_RAID”,它将返回null。

我正在使用x86程序在win7 64位上工作

1 个答案:

答案 0 :(得分:3)

在Windows 64位(Windows 2003 +,XP及更高版本的64位)中,发生了透明注册表重定向,以便为32位和64位注册表调用提供单独的逻辑视图。

阅读以下链接以获取更多信息;这是重要的信息。

  

注册表重定向程序隔离32位和64位应用程序   提供注册表某些部分的单独逻辑视图   在WOW64上。注册表重定向器拦截32位和64位   注册表调用各自的逻辑注册表视图和映射   他们到相应的物理注册表位置。重定向   流程透明到应用程序。因此,一个32位   应用程序可以访问注册表数据,就像它在32位上运行一样   Windows,即使数据存储在64位的不同位置   视窗。

MSDN Registry Redirector