在C#中使用简单查询的WMI错误

时间:2009-09-24 22:39:21

标签: c# wmi

我正在尝试在Windows 2000上使用此代码:

foreach (Process p in Process.GetProcesses())
{
    if (p.MainModule.FileName.EndsWith("calc.exe"))
    {
        using (ManagementObjectSearcher mos = 
                   new ManagementObjectSearcher(
                     "SELECT CommandLine,ExecutablePath 
                       FROM Win32_Process WHERE ProcessId=" + p.Id.ToString()))
        {
            using (ManagementObjectCollection moc = mos.Get())
            {
                foreach (ManagementObject mo in moc)
                {
                    MessageBox.Show((string)mo["CommandLine"]);
                    return;
                }
            }
        }
    }
}

这适用于Windows XP及更高版本,但在Windows 2000上出现“无效查询”错误。 According to MSDN,Windows 2000及更高版本支持Win32_Process对象,所以我不确定我做错了什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

对不起大家。我刚刚意识到“CommandLine”字段仅适用于Windows XP及更高版本。问题解决了。