gpt4 book ai didi

c# - WMI VBScript 与 C#

转载 作者:行者123 更新时间:2023-11-30 20:11:57 25 4
gpt4 key购买 nike

我正在尝试获取有关本地计算机(一个是 Windows 7 和其他 XP SP3)上已安装软件的信息,我可以使用 VBScript 来完成,但不能使用 C#。

这是 VBScript 代码:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery _
("Select * from Win32_Product")

For Each objSoftware in colSoftware
Wscript.Echo "Name: " & objSoftware.Name
Wscript.Echo "Version: " & objSoftware.Version
Next

这是C#代码:

string queryProd = "SELECT * FROM Win32_Product";                
ObjectQuery oQuery = new ObjectQuery(queryProd);
ManagementObjectSearcher searcherProd = new ManagementObjectSearcher(oQuery);
ManagementObjectCollection resultCollection = searcherProd.Get();

foreach (ManagementObject prodVar in resultCollection)
{
Console.WriteLine("Product Name: {0}, Version: {1}.",
(prodVar["Name"] == null) ? prodVar["Name"] : "/",
(prodVar["Version"] == null) ? prodVar["Version"] : "/");
}

第二个代码片段 (C#) 无效。它没有给我任何错误,它只是返回 null。问题是,当我使用其他一些 WMI 类(例如 Win32_ComputerSystem)时,C# 代码可以完美运行。但同样,它不适用于 Win32_DiskDrive 类,也不适用于这种特殊情况等。

总而言之,在 C# 中,WMI 仅适用于某些类,而在 VBScript 中,它们都适用。所以,我想知道这是为什么?

感谢您的回答。

最佳答案

这是我使用 Microsoft 的 WMI 代码生成器生成的一些代码。它似乎得到了你想要的数据。

您可以下载生成器here

using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
public class MyWMIQuery
{
public static void Main()
{
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_Product");

foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("Win32_Product instance");
Console.WriteLine("-----------------------------------");
Console.WriteLine("Name: {0}", queryObj["Name"]);
Console.WriteLine("Version: {0}", queryObj["Version"]);
}
}
catch (ManagementException e)
{
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}
}
}
}

关于c# - WMI VBScript 与 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3114254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com