通过WMI获取远程机器磁盘信息的实现方式

通过WMI获取远程机器磁盘信息的实现方法

通过WMI获取远程机器磁盘信息的实现方法

-远程连接WMI windows10专业版配置
今天尝试要获取远程机器的磁盘信息,查找了一下,根据 信息实现了监控磁盘的余量的监控功能。现介绍如下:

  1. win+r 输入 regedit 打开注册表编辑器
    确认该路径HKEY_LOCAL_MACHINE→SOFTWARE→Microsoft→Ole→EnableDCOM的值是否为Y
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System看这个路径下是否有 32位类型为DWORD字段名为LocalAccountTokenFilterPolicy值为十六进制的1 没有则创建(需要手动创建,初始化的系统没有该值)
  2. 检查远程连接所用的用户是否具有权限
    win + r 输入 dcomcnfg 打开 组件服务
    在组件服务->计算机->我的电脑 右键属性 COM安全 栏 启动和激活权限 编辑默认值 添加用户并勾选所有权限
    点击默认属性,勾选"在此计算机上启用分布式COM" ,默认身份验证级别为连接,默认模拟级别是模拟或标识。(window初始化后,默认属性配置是正确的不需要修改)
  3. 防火墙设置
    直接关闭防火墙
    端口135,139,或者445是否正常
  4. 测试配置是否成功
    可以在另一台window win+r 输入wbemtest.exe打开Windows Management Instrumentation测试器
    点击连接 在命名空间输入\192.169.204.132\root\cimv2,凭据下的用户名和密码输入被连接电脑的用户名和密码
    点击连接,如果没有报错的话则配置成功
  5. 没有连接成功之后的检查项
    Win+r 输入wmimgmt.msc 打开Windows管理体系结构控制台
    右键点击WMI控制,选择属性 -> 安全 -> 安全设置。
    添加用户 并勾选全部权限(该操作需要管理员权限)
    按照4 步骤检查是否配置成功。

不成功则win+r输入services.msc 检查Remote Procedure Call (RPC),RemoteRegistry,Windows Management Instrumentation是否正在运行,没有运行的启动运行。(碰到被禁用的双击设置为手动在启动运行)

远程获取磁盘余量信息代码

public long GetRemoteDriverInfo(string sIP,string Username, string Password, string sDriverName)
        {
   
            
            try
            {
   
                
                #region 远程
                ConnectionOptions connectionOptions = new ConnectionOptions();
                connectionOptions.Username = Username;
                connectionOptions.Password = Password;
                connectionOptions.Timeout = new TimeSpan(1, 1, 1, 1);//连接时间
                                                                        //ManagementScope 的服务器和命名空间。
                string path = string.Format("\\\\{0}\\root\\cimv2", sIP);
                ManagementScope scope = new ManagementScope(path, connectionOptions);
                scope.Connect();
                //查询字符串,某磁盘上信息
                string strQuery = string.Format("select * from Win32_LogicalDisk");
                ObjectQuery query = new ObjectQuery(strQuery);
                //查询ManagementObjectCollection返回结果集
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
                foreach (ManagementObject m in searcher.Get())
                {
   
                    
                    if (m["Name"].ToString().Contains(sDriverName) && m["DriveType"].ToString() == "3")//3:DriveType.Fixed
                    {
   
                        freesize = Convert.ToInt64(m["FreeSpace"]) / gb;

                        获得硬盘的可用空间
                        //free = Convert.ToInt64(Return["FreeSpace"]) / mb;
                        获得硬盘的已用空间
                        //use = (Convert.ToInt64(Return["Size"]) - Convert.ToInt64(Return["FreeSpace"])) / mb;
                        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值