About wmi

patrol sunp1028 at gmail.com
Mon Jul 14 03:24:14 EDT 2008


On 7月14日, 下午12时29分, Larry Bates <larry.ba... at websafe.com`> wrote:
> 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- 隐藏被引用文字 -
>
> - 显示引用的文字 -

Thanks



More information about the Python-list mailing list