WMI连接window10专业版

本文详细介绍了如何配置Windows 10专业版以允许远程WMI连接,包括修改注册表、设置COM安全、检查防火墙和端口、使用wbemtest测试连接。特别提到,使用Python代码可以成功连接,而Java的j-interop库可能无法成功。
摘要由CSDN通过智能技术生成

远程连接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 没有则创建(需要手动创建,初始化的系统没有该值)

  1. 检查远程连接所用的用户是否具有权限

win + r 输入 dcomcnfg 打开 组件服务
在组件服务->计算机->我的电脑 右键属性 COM安全 栏 启动和激活权限 编辑默认值 添加用户并勾选所有权限
点击默认属性,勾选"在此计算机上启用分布式COM" ,默认身份验证级别为连接,默认模拟级别是模拟或标识。(window初始化后,默认属性配置是正确的不需要修改)

  1. 防火墙设置

直接关闭防火墙
端口135,139,或者445是否正常

  1. 测试配置是否成功

可以在另一台window win+r 输入wbemtest.exe打开Windows Management Instrumentation测试器
点击连接 在命名空间输入\192.169.204.132\root\cimv2,凭据下的用户名和密码输入被连接电脑的用户名和密码
点击连接,如果没有报错的话则配置成功

  1. 没有连接成功之后的检查项

Win+r 输入wmimgmt.msc 打开Windows管理体系结构控制台
右键点击WMI控制,选择属性 -> 安全 -> 安全设置。
添加用户 并勾选全部权限(该操作需要管理员权限)
按照4 步骤检查是否配置成功。

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

注意

目前网上有关Java连接wmi的 j-interop jar包不能连接成功。
使用python代码可以连接成功,window10专业版,window8可以连接成功

以下是python代码

import wmi
import codecs
def sys_version(ipaddress, user, password):
    tmplist = {
   }
    try:
        c = wmi.WMI(computer=ipaddress, user=user, password=password,debug=True)
        # tmplist["cmptype"] = gettype(c)
        # tmplist["ip"] = ipaddress
        # tmplist["factory"] = getfactory(c)
        # tmplist["cpus"] = getcpus(c)
        # tmplist["cpuname"] = getcpuname(c)
        # disks = []
        # disks = getdisks(c)
        # tmplist["alldisk"] = str(disks[0]) + "G"
        # tmplist["usedisk"] = str(disks[1]) + "G"
        # tmplist["diskp"] = str(disks[2]) + "%"
        # mem = []
        # mem = getmemory(c)
        # tmplist["memory"] = mem[0]
        # tmplist["pmem"] = mem[1]
        # tmplist["hostnames"] = getcmpname(c)
        # tmplist["domains"] = getdomain(c)
        # tmplist["os"] = getsystemname(c)
        # tmplist["86or64"] = getx86or64(c)
        # cpuuse = []
        # cpuuse = getcpuuse(c)
        # tmplist["cpunum"] = cpuuse[0]
        # tmplist["cpuuse"] = cpuuse[1]
        # tmplist["sn"] = getsn(c)
        # print(tmplist)

        # wql = "SELECT * FROM Win32_NTLogEvent where TimeGenerated > '20220325062951.500448-000'"
        # wql = "SELECT * FROM Win32_NTLogEvent"
        # wql_r = c.query(wql)
        # filenName = "localhost.txt"
        # fileObject = codecs.open(filenName, "w", "utf-8")
        # for line in wql_r:
        #     fileObject.write(line.__str__())
        # fileObject.close()
        # fileObject.write("--------------------------------------------------------------------------")
        # wql = "SELECT * FROM Win32_DiskDrive"
        # wql_r = c.query(wql)
        # for line in wql_r:
        #     fileObject.write(line.__str__())

        getApplication(c)
        getSystem(c)
        getSecurity(c)

        for sys in c.Win32_OperatingSystem():
            print ("Version:%s" % sys.Caption, "Vernum:%s" % sys.BuildNumber ) # 系统信息
            print (sys.OSArchitecture.encode("UTF8"))  # 系统的位数
            print (sys.NumberOfProcesses ) # 系统的进程数

            # filename = r"C:\test.bat"  # 此文件在远程服务器上
            # cmd_callbat = r"cmd /c call %s" % filename
            # print(cmd_callbat)
            # id, value =conn.Win32_Process.Create(CommandLine=cmd_callbat)  # 执行bat文件   Win32_Process.Create
            # print(id,value)
    except Exception as e:
        print (e)
        print (e.com_error.strerror.encode("UTF8"))

# 获取windows日志应用日志
def getApplication(c):
    try:
        wql = 'SELECT * FROM Win32_NTLogEvent where Logfile = "Application"'
        wql_r = c.query(wql
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值