0

我无法将 WMI 查询的响应写入文件,但可以将其打印到控制台。

我重写了查询以使用不同的 WMI 方法来提取数据。我改回了以下易于使用的方法。

如果响应不是可写字符串,我从更改为mo["PackageName"]mo["PackageName"].ToString()

我用谷歌搜索 - 我还没有找到类似的问题,我开始认为我的代码中很明显我只是忽略了一些东西。

//store log in same directory as exe is ran from
StreamWriter writeFile = new StreamWriter(filepath);    
ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT PackageName FROM Win32_Product WHERE PackageName LIKE 'jre%%'");
foreach (ManagementObject mo in mos.Get())
{
   if (mo["PackageName"].ToString().Contains("jre"))
   {
      String packageName = mo["PackageName"].ToString();
      writeFile.WriteLine(host + "," + packageName);
   }
}

更新 见下面我的回答:

foreach (ManagementObject mo in mos.Get())
        {
            if (mo["PackageName"].ToString().Contains("jre"))
            {
                String packageName = mo["PackageName"].ToString();
                writeFile.WriteLine(host + "," + packageName);
                writeFile.Flush();
            }
        }
4

3 回答 3

1

在不知道writeFile它是什么或如何定义的情况下,我只能建议您使用更简单的System.IO.File类,如下所示:

File.AppendAllText(pathToYourFile, host + "," + packageName);

这将自动为您打开、写入和关闭您的文件。

于 2013-05-20T19:12:25.887 回答
0

我使用WMI Code Creator来创建 WMI 查询代码。
它创建 C# 代码并且可以测试查询。

不是一个真正的答案 - 但可能会有所帮助。

于 2013-05-20T19:13:58.317 回答
0

写完后我忘了刷新作家。

String packageName = mo["PackageName"].ToString();
writeFile.WriteLine(host + "," + packageName);
writeFile.Flush();
于 2013-05-20T19:14:39.693 回答