我无法将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();
}
}
答案 0 :(得分:1)
在不知道writeFile
是什么或者如何定义的情况下,我只能建议您使用更简单的System.IO.File
类,如下所示:
File.AppendAllText(pathToYourFile, host + "," + packageName);
这将自动为您打开,写入和关闭文件。
答案 1 :(得分:0)
我使用WMI Code Creator创建WMI查询代码 它创建了C#代码,可以测试查询。
不是真正的答案 - 但可能有帮助。
答案 2 :(得分:0)
写完之后我忘记了写作。
String packageName = mo["PackageName"].ToString();
writeFile.WriteLine(host + "," + packageName);
writeFile.Flush();