2012-11-08 53 views
3

我在output1output2中得到了不同的結果。雖然第一個給我的價值,我實際上在註冊表中看到,後者只給了我默認值。我錯過了什麼?Registry.GetValue()和Registry.User.GetValue()的不同結果

String output1 = Registry.GetValue(
    @"HKEY_USERS\blobb", "beep", "nope!") as String; 

String output2 = Registry.Users.GetValue(
    @"blobb\beep", "nope!") as String; 

我已經嘗試了很多不同的輸入字符串的變體,但沒有給我正確的值。

回答

3

Registry.Users.GetValue正在尋找一個在root用戶鍵

要得到相同的結果,你的第一個例子名爲「blobb \嗶」的值,你需要像

using (var blobb = Registry.Users.OpenSubKey("blobb")) 
{ 
    String output2 = blobb.GetValue("beep", "nope!") as String 
} 
+0

在我看來,更直接去'Registry.GetValue()'的方法**但**問題是,我試圖訪問的密鑰的路徑有一個令人討厭的數字後緊跟「* HKEY_USERS *」,該數字之間的差異不同的電腦。是否有一種通用的方式來訪問「* HKEY_USERS \ S-1-5-21-12345678 \軟件\微軟*」?雖然數量有所不同,但其餘部分與「所有」計算機相同... –

+1

查看使用HKEY_CURRENT_USER \ blobb而不是 –

+0

您是否完全忽略了令人討厭的號碼? –