2011-01-04 3 views
0

Zusammenfassung:mit RegistryKey.OpenRemoteBaseKey Methode richtig C#

Ich brauche RegistryKey.OpenRemoteBaseKey verwenden Remote-Registrierung von HKEY_USERS

Voll Erklären Sie abfragen:

ich derzeit versuche Register auf entfernten Rechnern abfragen . Mein Code der RegistryKey.OpenRemoteBaseKey-Methode ist unten. Ich weiß, dass die "environmentKey = RegistryKey.OpenRemoteBaseKey (RegistryHive.CurrentUser, remoteName) .OpenSubKey (" Umgebung ");" Zeile aus dem ursprünglichen Beispiel um registrykey.openremotebasekey funktioniert. Allerdings muss ich HKEY_USERS abfragen, die die Anweisung zu RegistryKey ändern würde environmentKey = RegistryKey.OpenRemoteBaseKey (RegistryHive.Users, remoteName); und diese Zeile funktioniert nicht.

Jede Hilfe oder Code-Beispiele würden sehr geschätzt werden! Ich muss nur die Registrierungseinträge HKEY_USERS auf einem Remote-System abfragen. Jede Methode funktioniert für mich, mein Code unten ist nur, weil es die beste Methode ist, die ich bis jetzt gefunden habe, um zu bekommen, was ich will/brauche. Ich bin offen für Veränderungen :)

versuchen {

// Öffnen HKEY_CURRENT_USER \ Environment // auf einem entfernten Computer.

  string remoteName = host; 
      RegistryKey environmentKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.Users, remoteName); 
      foreach (string valueName in environmentKey.GetValueNames()) 
      { 
       string regy = (valueName + environmentKey.GetValue(valueName).ToString()); 
       Output.AppendText(regy + "\n"); 
      } 

      // Close the registry key. 
      environmentKey.Close(); 
     } 
     catch 
     { 
     } 
+0

haben Sie eine Ausnahme erhalten? Gibt es etwas mehr, das du uns geben kannst als "es funktioniert nicht"? – Bryan

+0

@Brian: Das Problem war, dass der ursprüngliche Code so viele Fehler geworfen hat, dass ID mein eigenes Forum braucht, um sie alle zu veröffentlichen haha ​​:) Es sieht so aus, als ob ich das Problem gelöst hätte. Bitte schauen Sie sich meinen Lösungscode unten an und zögern Sie nicht, einen Kommentar abzugeben. Vielen Dank – toosweetnitemare

+0

Nur überprüfen - Sie wissen, dass HKEY_USERS nur Informationen für Benutzer enthält, die derzeit angemeldet sind (auf dem Remote-Computer), nicht wahr? –

Antwort

0
List<string> hkey = new List<string>(); 
     try 
     { 
      // Open HKEY_USERS 
      // on a remote computer. 
      string remoteName = host; 
      RegistryKey environmentKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.Users, remoteName); 

      foreach (string subKeyName in environmentKey.GetSubKeyNames()) 
      { 
       hkey.Add(subKeyName); 
      } 

      // Close the registry key. 
      environmentKey.Close(); 
     } 
     catch 
     { 
     } 
+0

'RegistryKey environmentKey = RegistryKey.OpenRemoteBaseKey (RegistryHive.Users, remoteName);' sollte in ein 'using' gehüllt werden – Bryan