Re: About wmi
On 7月17日, 下午4时22分, Tim Golden [EMAIL PROTECTED] wrote: patrol wrote: I will try to modify the wmi.py ,however I'm a novice.It will take a long time. You can give it up temporarily. If you don't mind ,can you tell me where needs modifying and how? Just unicode? Or Other? OK. Thanks for your patience on this one, Patrol. What I propose to do is to dig into the pywin32 sources to determine what's going on when the error messages are fetched. Then I'll be better placed to decide what to do when they come out. On the surface, the current module should be handling things correctly; but I've obviously missed an encode/decode somewhere. If I can think of an (even hackish) workaround for you in the meantime, I'll let you know. Until then... TJG Thanks for Tim's help. Patrol -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
patrol wrote: I will try to modify the wmi.py ,however I'm a novice.It will take a long time. You can give it up temporarily. If you don't mind ,can you tell me where needs modifying and how? Just unicode? Or Other? OK. Thanks for your patience on this one, Patrol. What I propose to do is to dig into the pywin32 sources to determine what's going on when the error messages are fetched. Then I'll be better placed to decide what to do when they come out. On the surface, the current module should be handling things correctly; but I've obviously missed an encode/decode somewhere. If I can think of an (even hackish) workaround for you in the meantime, I'll let you know. Until then... TJG -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
patrol wrote: http://timgolden.me.uk/wmi-project/wmi.py It cannot work either. Oh well. It was only a quick fix! I'll try to get some kind of non-ASCII edition of Windows to test against. As I understand it, the situation is that some WMI exception (ie coming from the underlying WMI/COM subsystem) results in an error message which contains non-ASCII characters. Just so I'm not chasing red herrings, could you paste the output from the following code, please? code import wmi # use the version linked above c = wmi.WMI (non-existent computer) # # Should give a traceback here for the DCOM # error, not a UnicodeDecodeError. # /code Thanks TJG -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
On 7月16日, 下午3时29分, Tim Golden [EMAIL PROTECTED] wrote: patrol wrote: http://timgolden.me.uk/wmi-project/wmi.py It cannot work either. Oh well. It was only a quick fix! I'll try to get some kind of non-ASCII edition of Windows to test against. As I understand it, the situation is that some WMI exception (ie coming from the underlying WMI/COM subsystem) results in an error message which contains non-ASCII characters. Just so I'm not chasing red herrings, could you paste the output from the following code, please? code import wmi # use the version linked above c = wmi.WMI (non-existent computer) # # Should give a traceback here for the DCOM # error, not a UnicodeDecodeError. # /code Thanks TJG The errors are in the following: Traceback (most recent call last): File D:\My Documents\code\python\wmi\test.py, line 5, in module c = wmi.WMI (non-existent computer) File C:\Python25\lib\wmi.py, line 1199, in connect handle_com_error (error_info) File C:\Python25\lib\wmi.py, line 184, in handle_com_error exception_string = [u%s - %s % (hex (hresult_code), hresult_name)] UnicodeDecodeError: 'ascii' codec can't decode byte 0xb7 in position 4: ordinal not in range(128) Patrol -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
patrol wrote: The errors are in the following: Traceback (most recent call last): File D:\My Documents\code\python\wmi\test.py, line 5, in module c = wmi.WMI (non-existent computer) File C:\Python25\lib\wmi.py, line 1199, in connect handle_com_error (error_info) File C:\Python25\lib\wmi.py, line 184, in handle_com_error exception_string = [u%s - %s % (hex (hresult_code), hresult_name)] UnicodeDecodeError: 'ascii' codec can't decode byte 0xb7 in position 4: ordinal not in range(128) OK, I'm trying to set up a Virtual PC so I can install a non-English XP. But would you mind running the following code for me, please, so I can get a handle on what's coming back: code import pythoncom import win32com.client try: win32com.client.GetObject (winmgmts://blahblah) except pythoncom.com_error, info: for i in info: print repr (i) /code Thanks TJG -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
On 7月16日, 下午10时39分, Tim Golden [EMAIL PROTECTED] wrote: patrol wrote: The errors are in the following: Traceback (most recent call last): File D:\My Documents\code\python\wmi\test.py, line 5, in module c = wmi.WMI (non-existent computer) File C:\Python25\lib\wmi.py, line 1199, in connect handle_com_error (error_info) File C:\Python25\lib\wmi.py, line 184, in handle_com_error exception_string = [u%s - %s % (hex (hresult_code), hresult_name)] UnicodeDecodeError: 'ascii' codec can't decode byte 0xb7 in position 4: ordinal not in range(128) OK, I'm trying to set up a Virtual PC so I can install a non-English XP. But would you mind running the following code for me, please, so I can get a handle on what's coming back: code import pythoncom import win32com.client try: win32com.client.GetObject (winmgmts://blahblah) except pythoncom.com_error, info: for i in info: print repr (i) /code Thanks TJG -2147023174 'RPC \xb7\xfe\xce\xf1\xc6\xf7\xb2\xbb\xbf\xc9\xd3\xc3\xa1\xa3' None None -- import pythoncom import win32com.client try: win32com.client.GetObject (winmgmts://blahblah) except pythoncom.com_error, info: for i in info: print i -2147023174 RPC 服务器不可用。 None None - a=RPC 服务器不可用。 a 'RPC \xb7\xfe\xce\xf1\xc6\xf7\xb2\xbb\xbf\xc9\xd3\xc3\xa1\xa3' - Patrol -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
patrol wrote: -2147023174 'RPC \xb7\xfe\xce\xf1\xc6\xf7\xb2\xbb\xbf\xc9\xd3\xc3\xa1\xa3' None None -- import pythoncom import win32com.client try: win32com.client.GetObject (winmgmts://blahblah) except pythoncom.com_error, info: for i in info: print i -2147023174 RPC 服务器不可用。 None None - a=RPC 服务器不可用。 a 'RPC \xb7\xfe\xce\xf1\xc6\xf7\xb2\xbb\xbf\xc9\xd3\xc3\xa1\xa3' - Patrol Brilliant. Thanks, Patrol. So the error message comes back encoded. Can you confirm what your console encoding is, please? The following script should confirm: code import os, sys print sys.stdout.encoding os.system (chcp) /code TJG -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
Assuming that the error comes back in the sys.stdout encoding, the following version *should* work ok. I still haven't got a non-English set up to test it on, but it certainly does return a Unicode error message. http://timgolden.me.uk/wmi-project/wmi.py The usual test case, if you wouldn't mind: code import wmi wmi.WMI (non-existent computer) /code should give a (language-specific) error message, not an UnicodeDecodeError TJG -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
On 7月16日, 下午11时59分, Tim Golden [EMAIL PROTECTED] wrote: patrol wrote: -2147023174 'RPC \xb7\xfe\xce\xf1\xc6\xf7\xb2\xbb\xbf\xc9\xd3\xc3\xa1\xa3' None None -- import pythoncom import win32com.client try: win32com.client.GetObject (winmgmts://blahblah) except pythoncom.com_error, info: for i in info: print i -2147023174 RPC 服务器不可用。 None None - a=RPC 服务器不可用。 a 'RPC \xb7\xfe\xce\xf1\xc6\xf7\xb2\xbb\xbf\xc9\xd3\xc3\xa1\xa3' - Patrol Brilliant. Thanks, Patrol. So the error message comes back encoded. Can you confirm what your console encoding is, please? The following script should confirm: code import os, sys print sys.stdout.encoding os.system (chcp) /code TJG- 隐藏被引用文字 - - 显示引用的文字 - import os,sys print sys.stdout.encoding cp936 os.system(chcp) 活动的代码页: 936 0 sys.getdefaultencoding() 'ascii' -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
On 7月17日, 上午12时16分, Tim Golden [EMAIL PROTECTED] wrote: Assuming that the error comes back in the sys.stdout encoding, the following version *should* work ok. I still haven't got a non-English set up to test it on, but it certainly does return a Unicode error message. http://timgolden.me.uk/wmi-project/wmi.py The usual test case, if you wouldn't mind: code import wmi wmi.WMI (non-existent computer) /code should give a (language-specific) error message, not an UnicodeDecodeError TJG -- import wmi wmi.WMI('non-existent computer') Traceback (most recent call last): File stdin, line 1, in module File C:\Python25\lib\wmi.py, line 1199, in connect handle_com_error (error_info) File C:\Python25\lib\wmi.py, line 184, in handle_com_error exception_string = [u%s - %s % (hex (hresult_code), hresult_name)] UnicodeDecodeError: 'ascii' codec can't decode byte 0xb7 in position 4: ordinal not in range(128) -- yup,error_info contains the Chinese encoded string. All of the Simple Chinese Windows use the CP936.Every Chinese word utilizes two bytes.Maybe you can fix this bug by modifying handle_com_error. Patrol -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
patrol wrote: import wmi wmi.WMI('non-existent computer') Traceback (most recent call last): File stdin, line 1, in module File C:\Python25\lib\wmi.py, line 1199, in connect handle_com_error (error_info) File C:\Python25\lib\wmi.py, line 184, in handle_com_error exception_string = [u%s - %s % (hex (hresult_code), hresult_name)] UnicodeDecodeError: 'ascii' codec can't decode byte 0xb7 in position 4: ordinal not in range(128) -- yup,error_info contains the Chinese encoded string. All of the Simple Chinese Windows use the CP936.Every Chinese word utilizes two bytes.Maybe you can fix this bug by modifying handle_com_error. Well, that's what I've done in that latest version. Only I naively assumed that I could use sys.stdout.encoding to determine the encoding. I'll have to try harder. TJG -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
patrol wrote: On 7月17日, 上午12时16分, Tim Golden [EMAIL PROTECTED] wrote: Assuming that the error comes back in the sys.stdout encoding, the following version *should* work ok. I still haven't got a non-English set up to test it on, but it certainly does return a Unicode error message. http://timgolden.me.uk/wmi-project/wmi.py The usual test case, if you wouldn't mind: code import wmi wmi.WMI (non-existent computer) /code should give a (language-specific) error message, not an UnicodeDecodeError TJG -- import wmi wmi.WMI('non-existent computer') Traceback (most recent call last): File stdin, line 1, in module File C:\Python25\lib\wmi.py, line 1199, in connect handle_com_error (error_info) File C:\Python25\lib\wmi.py, line 184, in handle_com_error exception_string = [u%s - %s % (hex (hresult_code), hresult_name)] UnicodeDecodeError: 'ascii' codec can't decode byte 0xb7 in position 4: ordinal not in range(128) -- yup,error_info contains the Chinese encoded string. All of the Simple Chinese Windows use the CP936.Every Chinese word utilizes two bytes.Maybe you can fix this bug by modifying handle_com_error. Can you confirm that that last bit of code was run with the version of wmi.py currently at: http://timgolden.me.uk/wmi-project/wmi.py That version should already be decoding the string correctly. TJG -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
On 7月17日, 上午3时20分, Tim Golden [EMAIL PROTECTED] wrote: patrol wrote: On 7月17日, 上午12时16分, Tim Golden [EMAIL PROTECTED] wrote: Assuming that the error comes back in the sys.stdout encoding, the following version *should* work ok. I still haven't got a non-English set up to test it on, but it certainly does return a Unicode error message. http://timgolden.me.uk/wmi-project/wmi.py The usual test case, if you wouldn't mind: code import wmi wmi.WMI (non-existent computer) /code should give a (language-specific) error message, not an UnicodeDecodeError TJG -- import wmi wmi.WMI('non-existent computer') Traceback (most recent call last): File stdin, line 1, in module File C:\Python25\lib\wmi.py, line 1199, in connect handle_com_error (error_info) File C:\Python25\lib\wmi.py, line 184, in handle_com_error exception_string = [u%s - %s % (hex (hresult_code), hresult_name)] UnicodeDecodeError: 'ascii' codec can't decode byte 0xb7 in position 4: ordinal not in range(128) -- yup,error_info contains the Chinese encoded string. All of the Simple Chinese Windows use the CP936.Every Chinese word utilizes two bytes.Maybe you can fix this bug by modifying handle_com_error. Can you confirm that that last bit of code was run with the version of wmi.py currently at: http://timgolden.me.uk/wmi-project/wmi.py That version should already be decoding the string correctly. TJG import wmi wmi.WMI('non-existent computer') Traceback (most recent call last): File pyshell#2, line 1, in module wmi.WMI('non-existent computer') File C:\Python25\lib\wmi.py, line 1199, in connect handle_com_error (error_info) File C:\Python25\lib\wmi.py, line 189, in handle_com_error raise x_wmi, u\n.join (exception_string) x_wmi: unprintable x_wmi object -- # -*- coding:utf-8 -*- import wmi from time import sleep c = wmi.WMI () process_watcher = c.Win32_Process.watch_for(creation) while True: new_process = process_watcher() if new_process.Caption == 'notepad.exe': print start killing.. sleep(5) result = new_process.Terminate() print killed When I kill the notepad.exe manually,it also results in errors. Traceback (most recent call last): File C:\Documents and Settings\patrol\桌面\test.py, line 12, in module result = new_process.Terminate() File C:\Python25\lib\wmi.py, line 396, in __call__ handle_com_error (error_info) File C:\Python25\lib\wmi.py, line 188, in handle_com_error exception_string.append (u %s - %s % (hex (scode), (error_description or u).decode (sys.stdout.encoding).strip ())) UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordin al not in range(128) --- Patrol -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
I will try to modify the wmi.py ,however I'm a novice.It will take a long time. You can give it up temporarily. If you don't mind ,can you tell me where needs modifying and how? Just unicode? Or Other? -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
patrol wrote: Situation (2): result = new_process.terminate() File C:\Python25\lib\wmi.py, line 494, in __getattr__ 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) BTW, My windows' languange is Chinese. Well that looks embarrassingly like a complete lack of unicode-awareness in the wmi module. Would you mind trying this version: http://timgolden.me.uk/wmi-project/wmi.py which is a copy of the svn trunk to see if that improves the UnicodeDecode error, please? I'll try to get an install of a non-English edition of Windows but, as you might imagine, I normally run the UK version so don't hit these kind of issue myself. TJG -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
patrol wrote: Situation (1): result = new_process.terminate() TypeError: 'int' object is not callable I'm not sure exactly what's causing that particular effect, but I would suggest that you call the method as .Terminate (note the initial capital). On my box, calling .terminate simply raises an AttributeError as expected, but I do remember encountering the situation you're describing in some situation which now escapes me. At any rate, try using: result, = new_process.Terminate () and note that the return value is a tuple, not a single number. The code will work either way, but in your case result will be a tuple of length one; in mine, result will be a number. TJG -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
http://timgolden.me.uk/wmi-project/wmi.py It cannot work either. which is a copy of the svn trunk to see if that improves the UnicodeDecode error, please? I'll try to get an install of a non-English edition of Windows but, as you might imagine, I normally run the UK version so don't hit these kind of issue myself. I expect you can test successfully at a non-English edition -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
At any rate, try using: result, = new_process.Terminate () Windows is sometime case insensitive,but the python is case sensitive. I also encountered this kind of problems. Thanks for Tim's help. Patrol -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
On 7月14日, 下午12时29分, Larry Bates [EMAIL PROTECTED] wrote: patrol wrote: On 7月13日, 下午10时26分, Larry Bates [EMAIL PROTECTED] 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 processNamescrcons.exe/processName processNameTXPlatform.exe/processName processNamemdm.exe/processName processNameFNPLicensingService.exe/processName processNamenotepad.exe/processName processNameuedit32.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 -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
Larry Bates 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) [... snip code ...] You should probably post this to comp.python.windows. Tim Golden (author of WMI interface) monitors that list religously (thanks Tim). Actually, I follow this one pretty much, too. I've just been a bit busy these last few days. And still am, so this answer will be short :) 1) I'm not sure if WMI can be forced to close down system processes, but if it can it's probably by means of specifying one or more privileges when you connect. Try looking in the WMI newsgroups for a more general (non-Python) answer to this and I'll happily explain how to apply it in a Python context. 2) I can't quite see from this traceback where the problem arises. Have you snipped the traceback at all, or was that all there was? Can you narrow the thing down to a short snippet of code which I'm likely to be able to run independently, please? Sorry for the haste. TJG -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
Situation (1): result = new_process.terminate() TypeError: 'int' object is not callable Situation (2): result = new_process.terminate() File C:\Python25\lib\wmi.py, line 494, in __getattr__ 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) BTW, My windows' languange is Chinese. -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
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 processNamescrcons.exe/processName processNameTXPlatform.exe/processName processNamemdm.exe/processName processNameFNPLicensingService.exe/processName processNamenotepad.exe/processName processNameuedit32.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 -- http://mail.python.org/mailman/listinfo/python-list
Re: About wmi
On 7月13日, 下午10时26分, Larry Bates [EMAIL PROTECTED] 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 processNamescrcons.exe/processName processNameTXPlatform.exe/processName processNamemdm.exe/processName processNameFNPLicensingService.exe/processName processNamenotepad.exe/processName processNameuedit32.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://mail.python.org/mailman/listinfo/python-list
Re: About wmi
patrol wrote: On 7月13日, 下午10时26分, Larry Bates [EMAIL PROTECTED] 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 processNamescrcons.exe/processName processNameTXPlatform.exe/processName processNamemdm.exe/processName processNameFNPLicensingService.exe/processName processNamenotepad.exe/processName processNameuedit32.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 -- http://mail.python.org/mailman/listinfo/python-list