网站首页/硬件软件列表/内容

C#如何取得注册表中的主键、子键以及具体的键值

硬件软件2024-04-12阅读

关于C#如何获取注册表中键值的教程很多,但是对于新手来说,网上的这些教程有些鱼龙混杂,笔者也是一个C#爱好者,虽然懂得一些编程基础,但是对于某些具体的应用还是不求甚解,在寻求获取注册表键值的时候花费了大量的精力,不过付出的艰辛终归有回报,让笔者彻底掌握了C#如何来获取注册表的键值,为了帮助更多的c#新手少走一些弯路,亦是美网络觉得很有必要和大家分享一下我的心得。

C#中主要通过两个类来获取注册表中的主键和键值,它们分别是Registry、RegistryKey,这两个类属于命名空间Micosoft.Win32,所以我们在使用这两个类之前,请首先添加Microsoft.Win32这个命名空间,Registry类主要用于获取注册表中的主键,大家都知道windows注册表中有几个不同的主键,比如 HKEY_LOCAL_MACHINE;而RegistryKey类是在Registry类确定主键的情况下,获取主键下面的子键,下面我们以一个具体的例子来详解这两个类的具体用法。

比如我们想要获取office2013 word的安装目录,那么我们可以通过注册表找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Word\InstallRoot来实现:

RegistryKey hkml = Registry.LocalMachine; //获取主键HKEY_LOCAL_MACHINE
RegistryKey software = hkml.OpenSubKey("software", true); //获取/检索子键
RegistryKey microsoft = software.OpenSubKey("microsoft", true); //获取/检索子键
RegistryKey office = microsoft.OpenSubKey("office", true); //获取/检索子键
RegistryKey office15 = office.OpenSubKey("15.0", true);//获取/检索子键
RegistryKey infopath = office15.OpenSubKey("word", true); //获取/检索子键
RegistryKey installroot = infopath.OpenSubKey("installroot", true); //获取/检索子键
string office2013path = installroot.GetValue("path").ToString(); //获取子键中指定项的键值
hkml.Close(); //关闭对注册表的访问

从上面我们可以看出,Registry类来获取主键LocalMachine,RegistryKey则获取它下面的子键,一直到最后一个子键Install,当然了,里面还用到了OpenSubKey方法,这个方法主要用于打开注册表中的子键,比如RegistryKey software = hkml.OpenSubKey("software", true);的意思为检索指定的子键,并且是否给予该项“写权限”。

当检索到最后一个子键时,我们就可以通过GetValue方法来获取指定项的键值属性了。

相关阅读