About wmi

Larry Bates larry.bates at websafe.com`
Mon Jul 14 00:29:41 EDT 2008


patrol wrote:
> On 7月13日, 下午10时26分, Larry Bates <larry.ba... at websafe.com`> wrote:
>> patrol wrote:
>>> I want to prevent some process from running. The code is in the
>>> following. I  encounter some unexpected troubles.
>>> Probelm1: This program cannot terminate "scrcons.exe" and
>>> "FNPLicensingService.exe",which are system processes.
>>> Problem2:After a while, this program will abort by error
>>>   File "C:\Python25\lib\wmi.py", line 397, in __call__
>>> handle_com_error (error_info)
>>>   File "C:\Python25\lib\wmi.py", line 190, in handle_com_error raise
>>> x_wmi, "\n".join (exception_string)
>>> UnicodeDecodeError: 'ascii' codec can't decode byte 0xb7 in position
>>> 14: ordinal not in range(128)
>>> ----------------------------------------------------
>>> code-----------------------------------------------------------------------------------
>>> # -*- coding:utf-8 -*-
>>> import pythoncom
>>> import wmi
>>> import threading
>>> import time
>>> from xml.dom.minidom import parse, parseString
>>> class Info (threading.Thread):
>>>    def __init__ (self):
>>>            threading.Thread.__init__ (self)
>>>    def run (self):
>>>            print 'In Another Thread...'
>>>            pythoncom.CoInitialize ()
>>>            dom1 = parse('processTerminateList.xml')
>>>            config_element = dom1.getElementsByTagName("processTerminateList")
>>> [0]
>>>            servers = config_element.getElementsByTagName("processName")
>>>            try:
>>>                    c = wmi.WMI ()
>>>                    for process in c.Win32_Process ():
>>>                            for server in servers:
>>>                                    if process.name == getText(server.childNodes):
>>>                                            process.Terminate()
>>>                                            print process.name
>>>                    process_watcher = c.Win32_Process.watch_for("creation")
>>>                    while True:
>>>                            new_process = process_watcher()
>>>                            name =  new_process.Caption
>>>                            print name
>>>                            for server in servers:
>>>                                    if name == getText(server.childNodes):
>>>                                            new_process.Terminate()
>>>            finally:
>>>                    pythoncom.CoUninitialize ()
>>> def getText(nodelist):
>>>    rc = ""
>>>    for node in nodelist:
>>>            if node.nodeType == node.TEXT_NODE:
>>>                    rc = rc + node.data
>>>    return rc
>>> if __name__ == '__main__':
>>>    Info().start()
>>> ------------------------------------------------------
>>> processTerminateList.xml------------------------------------------------------------------------
>>> <?xml version="1.0" encoding="utf-8"?>
>>> <processTerminateList>
>>>     <processName>scrcons.exe</processName>
>>>     <processName>TXPlatform.exe</processName>
>>>     <processName>mdm.exe</processName>
>>>     <processName>FNPLicensingService.exe</processName>
>>>     <processName>notepad.exe</processName>
>>>     <processName>uedit32.exe</processName>
>>> </processTerminateList>
>> You should probably post this to comp.python.windows.  Tim Golden (author of WMI
>> interface) monitors that list religously (thanks Tim).
>>
>> -Larry- 隐藏被引用文字 -
>>
>> - 显示引用的文字 -
> 
> I cannot find comp.python.windows.What's the URL?

http://news.gmane.org/gmane.comp.python.windows/cutoff=7565

-Larry



More information about the Python-list mailing list