【发布时间】:2011-12-19 10:48:46
【问题描述】:
我想检索从远程主机安装的软件。我想从注册表而不是 Win32_Product 中获取详细信息。我正在使用 wmi。我尝试了很多来自网络的例子。它们中的大多数都在我需要的 C# 中的 vb.net 中。任何人都可以发布代码..
这是我正在使用的代码
string regKeyToGet=@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\";
string keyToRead= "DisplayName";
ConnectionOptions oConn = new ConnectionOptions();
oConn.Username = "Ravinilson";
oConn.Password = "ravi";
ManagementScope scope = new ManagementScope(@"//" + RemotePC + @"/root/default", oConn);
ManagementClass registry = new ManagementClass(scope, new ManagementPath("StdRegProv"), null);
// Returns a specific value for a specified key
ManagementBaseObject inParams = registry.GetMethodParameters("GetStringValue");
nParams["sSubKeyName"] = regKeyToGet;
inParams["sValueName"] = keyToRead;
ManagementBaseObject outParams = registry.InvokeMethod("GetStringValue", inParams, null);
return outParams["sValue"].ToString();
但它给出“对象引用未设置为对象的实例”错误。 我正在从“Win32_Product”获取已安装的应用程序。但它只返回 Windows 产品。这就是为什么我想从注册表“SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\”获取数据。
【问题讨论】:
-
您已经在这里待了七个月,问了九个问题,从未接受过答案,从未提交过投票,而在这里,您基本上是在要求我们不费吹灰之力地为您提供代码。恐怕结局不会好……
-
哦,对不起..如果我得到了你的答案,我只是使用它。我不知道我应该接受它。
-
您到底为什么不想使用记录在案的方法呢?不要在注册表中寻找东西。将 VB.NET 代码转换为 C# 代码非常简单。在发布问题之前,您需要学会为自己付出一点努力。