I need to be able to read the values in a specific Registry Key from a list of Remote Computers. I can do this locally with the following 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());
}
but I don't know how to get the same info for a Remote Computer. Am I even using the right approach or should I be looking at WMI or something else?
You can achieve this through WMI, although I think you can also achieve it via the same mechanism (i.e. Microsoft.Win32 namespace classes) that you're currently using.
You need to look into the:
The link above gives examples. It's should be as simple as something like:
// Open HKEY_CURRENT_USER\Environment
// on a remote computer.
environmentKey = RegistryKey.OpenRemoteBaseKey(
RegistryHive.CurrentUser, remoteName).OpenSubKey(
"Environment");
Note, though, that'll there will be security implications in opening remote registry keys, so you may need to ensure that you have the relevant security permissions to do this. For that, you'll want to look into the:
and
classes in the System.Security.Permissions
namespace.