2010-05-26 74 views
8

嘿,如何可以通過使用C#的註冊表迭代?我希望創建一個表示每個鍵的屬性的結構。C#如何迭代註冊表?

+1

這將打破使用Mono任何便攜性上的其他系統除了Windows之外。只是一個警告。 – alternative 2010-05-26 19:15:42

回答

9

我覺得你需要的是GetSubKeyNames()就像這個例子。

private void GetSubKeys(RegistryKey SubKey) 
{ 
    foreach(string sub in SubKey.GetSubKeyNames()) 
    { 
     MessageBox.Show(sub); 
     RegistryKey local = Registry.Users; 
     local = SubKey.OpenSubKey(sub,true); 
     GetSubKeys(local); // By recalling itself it makes sure it get all the subkey names 
    } 
} 

//This is how we call the recursive function GetSubKeys 
RegistryKey OurKey = Registry.Users; 
OurKey = OurKey.OpenSubKey(@".DEFAULT\test",true); 
GetSubKeys(OurKey); 

(注:這是從原來的教程http://www.csharphelp.com/2007/01/registry-ins-and-outs-using-c/複製,但該網站現在似乎已關閉)。

+0

謝謝克里斯!我正要編寫遞歸函數,但我不熟悉這些方法! 謝謝 – Tom 2010-05-26 19:23:10

3
private void GetSubKeys(RegistryKey SubKey) 
{ 
    foreach(string sub in SubKey.GetSubKeyNames()) 
    { 
     MessageBox.Show(sub); 
     RegistryKey local = Registry.Users; 
     local = SubKey.OpenSubKey(sub,true); 
     GetSubKeys(local); // By recalling itselfit makes sure it get all the subkey names 
    } 
} 
//This is how we call the recursive function GetSubKeys 
RegistryKey OurKey = Registry.Users; 
OurKey = OurKey.OpenSubKey(@".DEFAULT\test",true); 
GetSubKeys(OurKey); 

http://www.csharphelp.com/2007/01/registry-ins-and-outs-using-c/