リモートレジストリを読み取るためだけに、私が本当に知らない管理クラスを使用しています:
string regKeyToGet = @"SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources";
string keyToRead = "Description";
ConnectionOptions oConn = new ConnectionOptions();
oConn.Username = "user1";
oConn.Password = "user1password";
ManagementScope scope = new ManagementScope(@"//" + "PC1" + @"/root/default", oConn);
ManagementClass registry = new ManagementClass(scope, new ManagementPath("StdRegProv"), null);
ManagementBaseObject inParams = registry.GetMethodParameters("GetStringValue");
inParams["sSubKeyName"] = regKeyToGet;
inParams["sValueName"] = keyToRead;
ManagementBaseObject outParams = registry.InvokeMethod("GetStringValue", inParams, null);
MessageBox.Show(outParams["sValue"].ToString());
このコードは、指定されたキーの特定の値を返しますが、次のように名前の値の配列を返す必要があります。
RegistryKey regKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.CurrentUser, PC1, RegistryView.Registry64).OpenSubKey("SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources");
regKey.GetValueNames();