从Key in Registry中读取数据并解析它

时间:2014-07-18 15:29:37

标签: c# registry

我在

下创建了一个文件夹
  

{HKEY_LOCAL_MACHINE \ SOFTWARE \ MyKeys}

MyKeys文件夹包含两个SubKeys

  

MyKeys ==> MF此文件夹包含一个字符串Weekday with Data Mon,Tue,Wed,Thu,Fri,Sat,Sun

     

MyKeys ==> TF此文件夹包含一个字符串Weekday,其数据包括Tue,Wed,Thu,Fri,Sat

我想要完成的是从第一个键读取数据并解析它并将其存储在变量中,以便稍后我可以在我的C#控制台应用程序中使用它来查看当前是否在其中一个该注册表中的项目。

以下是我尝试前往该位置的方式。

RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("Software\\MyKeys");

但是,registryKey为null。但如果我改变位置

RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("Software\\Intel");

它会读取该位置。

关于如何实现这一目标的任何建议?是否需要从应用程序访问该位置的特殊权限?

编辑: 这是一张让它有点清晰的图像。

enter image description here

1 个答案:

答案 0 :(得分:1)

尝试:

RegistryKey rk = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32).OpenSubKey("Software\\MyKeys");

string filePath = (string)rk.GetValue("Weekday");

注册表项存储在64位计算机上的其他位置。虽然如果您使用Regedit,它们在该位置可见,但它们实际上位于不同的位置

修改

在64位Windows上,部分注册表项针对32位应用程序和64位应用程序单独存储,并使用注册表重定向器和注册表反射映射到单独的逻辑注册表视图,因为64位版本的应用程序可能使用与32位版本不同的注册表项和值。还有一些未重定向或反映的共享注册表项。

32-bit and 64-bit Application Data in the Registry