ilovecomputer66 发表于 2023-2-15 08:46

C# 如何用代码判断系统是否开启wmi

C# 如何用代码判断系统是否开启wmi

sgbyg 发表于 2023-2-15 08:54

https://pic.imgdb.cn/item/63ec2d12f144a01007f83c49.jpg
using System;
using System.Management;
namespace WMI_Test
{
    class Program
    {
      static void Main(string[] args)
      {
            try
            {
                // 创建一个WMI管理类
                ManagementClass mc = new ManagementClass("Win32_Service");
                // 获取WMI管理类的实例
                ManagementObjectCollection moc = mc.GetInstances();
                // 遍历每一个实例
                foreach (ManagementObject mo in moc)
                {
                  // 判断是否是WMI服务
                  if (mo["Name"].ToString().ToLower() == "winmgmt")
                  {
                        // 判断WMI服务是否开启
                        if (mo["Started"].ToString().ToLower() == "true")
                        {
                            Console.WriteLine("WMI服务已开启");
                        }
                        else
                        {
                            Console.WriteLine("WMI服务未开启");
                        }
                  }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
            //Console.ReadKey();
      }
    }
}

小贾飞剑 发表于 2023-2-15 09:04

sgbyg 发表于 2023-2-15 08:54
using System;
using System.Management;
namespace WMI_Test


用wmi服务去查询
如果wmi服务未开启,应该是查不到结果,执行异常处理里的代码

sgbyg 发表于 2023-2-15 09:13

小贾飞剑 发表于 2023-2-15 09:04
用wmi服务去查询
如果wmi服务未开启,应该是查不到结果,执行异常处理里的代码

ai给的代码没注意看细节{:301_999:}

kenxy 发表于 2023-2-15 09:57

现在AI都可以给出代码了

ilovecomputer66 发表于 2023-2-15 09:59

sgbyg 发表于 2023-2-15 09:13
ai给的代码没注意看细节

厉害了。可惜我都没法注册账号

yingfeng 发表于 2023-2-15 11:43

判断VMI服务是否运行就可以了!{:1_905:}

ilovecomputer66 发表于 2023-2-15 12:06

yingfeng 发表于 2023-2-15 11:43
判断VMI服务是否运行就可以了!

知道啊,关键不知道用代码怎么判断

ttyy008 发表于 2023-2-15 13:10

string serviceName = "winmgmt";

ServiceController controller = new ServiceController(serviceName);

if (controller.Status == ServiceControllerStatus.Running)
{
    Console.WriteLine("The WMI service is running.");
}
else
{
    Console.WriteLine("The WMI service is not running.");
}

ctacy 发表于 2023-2-15 13:46

可以使用 ManagementScope 类来判断系统是否开启 WMI,代码如下:


using System.Management;

try
{
    ManagementScope scope = new ManagementScope("\\\\.\\root\\cimv2");
    scope.Connect();
    Console.WriteLine("WMI enabled.");
}
catch (ManagementException ex)
{
    Console.WriteLine("WMI disabled. Error message: " + ex.Message);
}


其中 ManagementScope 类是用于表示 WMI 服务的范围,连接到 WMI 服务时可以调用 Connect() 方法。如果连接成功,则说明 WMI 已经开启;如果连接失败,则说明 WMI 没有开启。
页: [1] 2
查看完整版本: C# 如何用代码判断系统是否开启wmi