2011-12-21 23 views
0

我正在研究一個.net應用程序,它將用於審計其運行的每臺計算機的配置。有沒有一種方便的方式來引用.net中的任意註冊表項?

我希望能夠讀取由字符串指定的任何註冊表項的值,例如:HKEY_LOCAL_MACHINE\SOFTWARE\MyOrganization\MyProgram

爲了獲得在.net中,此鍵手柄,我寫了以下內容:

RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\MyOrganization\\MyProgram); 

正如你所看到的,我使用Registry.LocalMachine來引用HKEY_LOCAL_MACHINE。

有沒有辦法指通過註冊表鍵的名稱,而不必引用這些領域的Registry對象?

+0

我要補充一點,我可以寫的東西解析字符串到第一個斜槓,看到'HKEY_LOCAL_MACHINE'然後引用'Registry.LocalMachine',但我希望有更好的方式來做到這一點。 – 2011-12-21 15:55:35

回答

1

你可能會想了一個類型反正分裂您的配置設置。畢竟,除非您在正常登錄到計算機的用戶環境中運行應用程序,否則檢查HKEY_CURRENT_USER是浪費時間。如果您改爲指定了機器,類和用戶,則可以在相應用戶的上下文中檢查這些內容。

另外,如果你是不是在找任何的花哨功能,並且都還用繩子Registry.GetValue/Registry.SetValue工作。

0

我終於想通了我自己問的問題:-)

Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\MyOrganization\MyProgram", "ValueName", "default value");

而且之後,文件說,該鍵不存在的情況下,該函數將返回null 。這對於使用此功能來檢測註冊表項的存在或不存在很有用。 (這是用來檢測是否安裝某些應用程序非常有用)

相關問題