2009-05-18 59 views
5

我有存儲在HKEY_LOCAL_MACHINE \ SOFTWARE \ MyCompany分支下的應用程序設置。不同用戶的設置必須相同,這就是爲什麼設置不在HKEY_CURRENT_USER下的原因。在應用程序的使用過程中,註冊表值爲只讀爲如何在Vista中讀取註冊表分支HKEY_LOCAL_MACHINE?

現在,在Windows Vista和由於UAC不能再使用如下代碼來讀取註冊表值:

RegistryKey myKey = Registry.LocalMachine.CreateSubKey 
     ("SOFTWARE\\MyCompany\\MyAppName"); 

我怎麼能在我的代碼(C#)讀取LOCALMACHINE分支值是多少?

回答

7

問題是,您正試圖創建一個密鑰而不能讀取它。如果您使用適當的API,您應該能夠從Vista上閱讀HKLM的值。

RegistryKey myKey = Registry.LocalMachine.OpenSubKey(
    @"Software\MyCompany\MyAppName", 
    false); 

注意上面的false參數。這具有在只讀模式下打開密鑰的效果。這是OpenSubKey的默認設置,但我更喜歡明確(主要是因爲我無法記住默認設置)。