Wie zu Lesen ist Remote Registry-Schlüssel?
Ich muss in der Lage sein zu Lesen der Werte in einem bestimmten Registry-Schlüssel aus einer Liste von Remote-Computern.
Ich kann das lokal mit dem folgenden code
using Microsoft.Win32;
RegistryKey rkey = Registry.LocalMachine;
RegistryKey rkeySoftware=rkey.OpenSubKey("Software");
RegistryKey rkeyVendor = rkeySoftware.OpenSubKey("VendorName");
RegistryKey rkeyVersions = rkeyVendor.OpenSubKey("Versions");
String[] ValueNames = rkeyVersions.GetValueNames();
foreach (string name in ValueNames)
{
MessageBox.Show(name + ": " + rkeyVersions.GetValue(name).ToString());
}
aber ich weiß nicht, wie man die gleichen Informationen für einen Remote-Computer. Bin ich sogar mit der richtige Ansatz oder sollte ich betrachten, WMI oder etwas anderes?
- Haben Sie als WMI?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erreichen dies durch WMI, obwohl ich denke, dass kann man auch erreichen es über den gleichen Mechanismus (d.h. Microsoft.Win32-namespace Klassen), die Sie gerade verwenden.
Müssen Sie sich in der:
OpenRemoteBaseKey Methode
Den link oben gibt Beispiele. Es sollte einfach sein, so etwas wie:
Beachten Sie jedoch, dann wird es Auswirkungen auf die Sicherheit bei der öffnung remote-registry-Schlüssel, so müssen Sie möglicherweise, um sicherzustellen, dass Sie die entsprechenden Sicherheitseinstellungen Berechtigungen, dies zu tun. Für, die, werden Sie wollen, zu schauen die:
SecurityPermission
und
RegistryPermission
Klassen in der
System.Security.Permissions
namespace.Fand ich, dass ich könnte, wie CraigTP zeigte die Verwendung der OpenRemoteBaseKey () - Methode, jedoch ist es erforderlich, mich zu ändern Sie die Berechtigungen in der registry auf den Ziel-Computer.
Hier ist der code, den ich schrieb, arbeitete ich einmal die entsprechenden Berechtigungen geändert.
Fand ich auch, dass ich bekommen konnte, um die gleichen Informationen mithilfe von WMI zimmerreserviereung, ohne das Sie die Berechtigungen geändert haben. Hier ist der code mit WMI.
P. S.
Ich rufe die GetStringValue () - Methode in der Schleife, wie ich weiß, alle Werte sind Zeichenketten. Wenn es mehrere Datentypen, die Sie brauchen würde, um Lesen Sie den Datentyp aus dem Typen output-parameter der EnumValues Methode.
Der win32-API können Sie einen Computernamen angeben, durch RegConnectRegistry. Ich bin mir nicht sicher, dass die .NET-Wrapper stellt diese. Sie können auch die WMI verwenden, wie Sie bereits erwähnt.
Nachschlagen OpenRemoteBaseKey().
Ein Kommentator auf meinem blog bat mich, die post meine Lösung auf stack overflow, so ist es hier.
Wie zu authentifizieren und den Zugriff auf die registry Remote mit C#
Es ist im Grunde das gleiche wie CraigTP Antwort, aber eine nette Klasse für die Authentifizierung beim remote-Gerät.
Und der code ist in der Produktion und getestet.
Dies ist die Lösung, die ich ging mit in am Ende:
Funktioniert wie ein Charme :]
Einfaches Beispiel in c# installierte Programme über die windows registry (remote: OpenRemoteBaseKey)