2012-11-08 80 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

您是否完全忽略了令人讨厌的号码? –