WMI GetStringValue为添加的注册表值返回Null

时间:2015-01-09 03:16:51

标签: wmi

我在这里有点疯狂。我试图读取我手动创建的注册表字符串值的值,每次返回null。如果我尝试读取现有注册表字符串值的值,它返回值就好了。以下是我使用的代码:

                  ManagementBaseObject rinParams = registry.GetMethodParameters("GetStringValue");

                        rinParams["hDefKey"] = HKEY_LOCAL_MACHINE;
                        rinParams["sSubKeyName"] = @"SOFTWARE\Microsoft\.NetFramework";
                  //      rinParams["sValueName"] = "InstallRoot";
                        rinParams["sValueName"] = "test";


                  ManagementBaseObject routParams = registry.InvokeMethod("GetStringValue", rinParams, null);

                  if (routParams.Properties["sValue"].Value != null)
                  {
                      routput = routParams.Properties["sValue"].Value.ToString();
                  }

我所做的是设置代码以使用上面的代码来读取" InstallRoot"的值。在注册表HKEY_LOCAL_Machine \ SOFTWARE \ Microsoft.NetFramework \ InstallRoot中,这是一个REG_SZ值。我得到一个成功的读取,目录路径返回正常。然后我创建了另一个REG_SZ变量名称" test"在相同的.NetFramework键中,注释掉了" sValueName" =" InstallRoot"并将其替换为" sValueName" ="测试"。当我在调试器下运行此代码时,我得到返回值null。

我尝试在SOFTWARE下添加密钥,并在该密钥中输入值,例如SOFTWARE \ Testkey,每次都得到相同的结果。它不会让我读取我创建的键,它总是返回null,但似乎我可以读取已经存在的任何键。我不明白为什么我会得到这个结果。

仅供参考,我正在从Windows 7 PC进行远程注册表读取。我的最终目标是能够添加注册表项和值。我试图这样做,我总是得到一个错误异常" Not Found"当我尝试这样的时候,所以我试图找到最简单的东西,即阅读密钥,即使这样做也没有用。对于这里可能会发生什么的任何想法?

这就是我与Windows 2008r2服务器进行远程连接以读取注册表的方式:

              ConnectionOptions connectoptions = new ConnectionOptions();
              connectoptions.Impersonation = ImpersonationLevel.Impersonate;
              connectoptions.Authentication = AuthenticationLevel.PacketPrivacy;
              connectoptions.Username = "administrator";
              connectoptions.Password = **password redacted**

              ManagementScope scope = new ManagementScope(@"\\" + systemIP + @"\root\default");
              scope.Options = connectoptions;

              ManagementClass registry = new ManagementClass(scope, new ManagementPath("StdRegProv"), null);

0 个答案:

没有答案