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
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
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: > > >> > >> import wmi > > >> wmi.WMI ("non-existent computer") > > >> > > >> should give a (language-specific) error message, not an UnicodeDecodeError > > >> TJG > > -- > import wmi > wmi.WMI('non-existent computer') > > Traceback (most recent call last): > > File "", line 1, in > > 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 "", line 1, in 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: -- # -*- 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 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
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: >> >> >> import wmi >> >> wmi.WMI ("non-existent computer") >> >> >> >> should give a (language-specific) error message, not an UnicodeDecodeError >> >> TJG > -- import wmi wmi.WMI('non-existent computer') > Traceback (most recent call last): > File "", line 1, in > 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
patrol wrote: import wmi wmi.WMI('non-existent computer') > Traceback (most recent call last): > File "", line 1, in > 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
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: > > > import wmi > > wmi.WMI ("non-existent computer") > > > > should give a (language-specific) error message, not an UnicodeDecodeError > > TJG -- >>> import wmi >>> wmi.WMI('non-existent computer') Traceback (most recent call last): File "", line 1, in 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
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: > > > import os, sys > > print sys.stdout.encoding > os.system ("chcp") > > > > 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
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: import wmi wmi.WMI ("non-existent computer") should give a (language-specific) error message, not an UnicodeDecodeError TJG -- 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: import os, sys print sys.stdout.encoding os.system ("chcp") 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 > > 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: > > > import pythoncom > import win32com.client > > try: > win32com.client.GetObject ("winmgmts://blahblah") > except pythoncom.com_error, info: > for i in info: > print repr (i) > > > > 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: > The errors are in the following: > > Traceback (most recent call last): > File "D:\My Documents\code\python\wmi\test.py", line 5, in > 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: import pythoncom import win32com.client try: win32com.client.GetObject ("winmgmts://blahblah") except pythoncom.com_error, info: for i in info: print repr (i) 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? > > > 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. > # > > > 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 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: 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? 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. # Thanks TJG -- 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
> 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
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
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
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
Hi, > 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. I use VBS to kill these processes,the VBS cannot kill these either. > 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? 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" We must start the notepad.exe manually, then (1) kill the notepad.exe by this code. (2)we kill the notepad.exe before this code manually. Both will result in errors. -- 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
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- > >>> > >>> > >>> scrcons.exe > >>> TXPlatform.exe > >>> mdm.exe > >>> FNPLicensingService.exe > >>> notepad.exe > >>> uedit32.exe > >>> > >> 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
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 >>> >>> >>> scrcons.exe >>> TXPlatform.exe >>> mdm.exe >>> FNPLicensingService.exe >>> notepad.exe >>> uedit32.exe >>> >> 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
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 > > > > > > scrcons.exe > > TXPlatform.exe > > mdm.exe > > FNPLicensingService.exe > > notepad.exe > > uedit32.exe > > > > 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: 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--- scrcons.exe TXPlatform.exe mdm.exe FNPLicensingService.exe notepad.exe uedit32.exe 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
About wmi
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--- scrcons.exe TXPlatform.exe mdm.exe FNPLicensingService.exe notepad.exe uedit32.exe -- http://mail.python.org/mailman/listinfo/python-list