python子线程中WMI报错-2147221020解决

2018-12-07  本文已影响0人  耀看

在编写检测进程的程序的时候发现如下错误:

def check_exsit(process_name):
    WMI = win32com.client.GetObject('winmgmts:')
    processCodeCov = WMI.ExecQuery('select * from Win32_Process where Name="%s"' % process_name)
    if len(processCodeCov) > 0:
        print ('%s is exists' % process_name)
    else:
        win32process.CreateProcess('C:\Program Files (x86)\Tektronix\VectorVuPC\VectorVu-PC.exe', '', None, None, 0, win32process.CREATE_NO_WINDOW,None,None,win32process.STARTUPINFO())
        print ('%s is not exists' % process_name)
失败报错

这个程序是在子线程中运行的,经过查询得知在子线程中运行WMI需要进行初始化,改为如下程序:

def check_exsit(process_name):
    pythoncom.CoInitialize()
    WMI = win32com.client.GetObject('winmgmts:')
    processCodeCov = WMI.ExecQuery('select * from Win32_Process where Name="%s"' % process_name)
    if len(processCodeCov) > 0:
        print ('%s is exists' % process_name)
    else:
        win32process.CreateProcess('C:\Program Files (x86)\Tektronix\VectorVuPC\VectorVu-PC.exe', '', None, None, 0, win32process.CREATE_NO_WINDOW,None,None,win32process.STARTUPINFO())
        print ('%s is not exists' % process_name)
上一篇下一篇

猜你喜欢

热点阅读