關(guān)于C#如何獲取注冊(cè)表中鍵值的教程很多,但是對(duì)于新手來(lái)說(shuō),網(wǎng)上的這些教程有些魚(yú)龍混雜,筆者也是一個(gè)C#愛(ài)好者,雖然懂得一些編程基礎(chǔ),但是對(duì)于某些具體的應(yīng)用還是不求甚解,在尋求獲取注冊(cè)表鍵值的時(shí)候花費(fèi)了大量的精力,不過(guò)付出的艱辛終歸有回報(bào),讓筆者徹底掌握了C#如何來(lái)獲取注冊(cè)表的鍵值,為了幫助更多的c#新手少走一些彎路,亦是美網(wǎng)絡(luò)覺(jué)得很有必要和大家分享一下我的心得。
C#中主要通過(guò)兩個(gè)類來(lái)獲取注冊(cè)表中的主鍵和鍵值,它們分別是Registry、RegistryKey,這兩個(gè)類屬于命名空間Micosoft.Win32,所以我們?cè)谑褂眠@兩個(gè)類之前,請(qǐng)首先添加Microsoft.Win32這個(gè)命名空間,Registry類主要用于獲取注冊(cè)表中的主鍵,大家都知道windows注冊(cè)表中有幾個(gè)不同的主鍵,比如 HKEY_LOCAL_MACHINE;而RegistryKey類是在Registry類確定主鍵的情況下,獲取主鍵下面的子鍵,下面我們以一個(gè)具體的例子來(lái)詳解這兩個(gè)類的具體用法。
比如我們想要獲取office2013 word的安裝目錄,那么我們可以通過(guò)注冊(cè)表找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Word\InstallRoot來(lái)實(shí)現(xiàn):
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(); //獲取子鍵中指定項(xiàng)的鍵值
hkml.Close(); //關(guān)閉對(duì)注冊(cè)表的訪問(wèn)
從上面我們可以看出,Registry類來(lái)獲取主鍵LocalMachine,RegistryKey則獲取它下面的子鍵,一直到最后一個(gè)子鍵Install,當(dāng)然了,里面還用到了OpenSubKey方法,這個(gè)方法主要用于打開(kāi)注冊(cè)表中的子鍵,比如RegistryKey software = hkml.OpenSubKey("software", true);的意思為檢索指定的子鍵,并且是否給予該項(xiàng)“寫(xiě)權(quán)限”。
當(dāng)檢索到最后一個(gè)子鍵時(shí),我們就可以通過(guò)GetValue方法來(lái)獲取指定項(xiàng)的鍵值屬性了。
|