C#如何獲取注冊表中的主鍵、子鍵以及具體的鍵值
2026-03-15 11:28:31
供稿:網友
網上講解關于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方法來獲取指定項的鍵值屬性了。