关于wmi

我想防止某些过程运行.代码在
下列的.我遇到了一些意想不到的麻烦.
probelm1:此程序无法终止" scrcons.exe"和
" fnplicenserservice.exe",是系统过程.
问题2:一段时间后,此程序将因错误而流产
文件" c:\ python25 \ lib \ wmi.py",第397行,in __call __
hander_com_error(error_info)
文件" c:\ python25 \ lib \ wmi.py",第190行
x_wmi," \ n" .join(exception_string)
UNICODEDEDECODEERROR:" ASCII"编解码器无法解码字节0xB7位置
14:序数不在范围内(128)
------------------------------------------------------------------------------------ - -
代码 - - - - - - - - - - - - - - - - - - - - - - - - - ----------------------------------------------------
# - * - 编码:UTF-8 - * -
导入pythoncom
导入WMI
导入线程
导入时间
来自XML.DOM.Minidom导入解析,parsestring
类信息(线程.线程):
def __init__(self):
螺纹.__ init__(self)
def run(self):
打印"在另一个线程..."
pythoncom.coinitialize()
dom1 = parse('ProcessTerminatelist.xml')
config_element = dom1.getElementsbytagname(" processTerminateList")
[0]
服务器= config_element.getElementsbytagname(" processName")
尝试:
c = wmi.wmi()
用于c.win32_process()中的过程:
服务器中的服务器:
如果process.name == getText(server.childnodes):
process.terminate()
打印过程.名称
process_watcher = c.win32_process.watch_for("创建")
而真:
new_process = process_watcher()
名称= new_process.caption
打印名称
服务器中的服务器:
如果名称== getText(server.childnodes):
new_process.terminate()
最后:
pythoncom.counitialize()
def getText(Nodelist):
rc =""
对于Nodelist中的节点:
如果node.nodetype == node.text_node:
rc = rc + node.data
返回RC
如果__name__ =='__ main __':
info().start()
------------------------------------------------------------------------------------ ------
ProcessTerminatelist.xml --------------------------------------------------------------------------------------------------------------------------------------- -----------------------------------

scrcons.exe txplatform.exe mdm.exe fnplicensingservice.exe Notepad.exe uedit32.exe

# 回答1


巡逻队写道:
您可能应该将其发布到comp.python.windows.蒂姆·戈登(WMI的作者
界面)监视宗教列出的列表(感谢蒂姆).
-larry
# 回答2


在7ô-13èõ,!10ê10ê±26·Ö,拉里·贝茨
您可能应该将其发布到comp.python.windows.蒂姆·戈登(WMI的作者
界面)监视宗教列出的列表(感谢蒂姆).
-larry -omÞ²ø±»òýóãîä×Ö--
-ISTHISISTIM
我找不到comp.python.windows.
# 回答3


巡逻队写道:
您可能应该将其发布到comp.python.windows.蒂姆·戈登(WmiInterface的作者)宗教列出的监视(感谢蒂姆).

我找不到comp.python.w indows.什么是网址?
http://news.gmane.org/gmane.comp.pyt...ws/cutoff=7565
-larry

# 回答4


在7ô-14èõ,!112ê±29·Ö,拉里·贝茨
http://news.gmane.org/gmane.comp.pyt...ws/cutoff=7565
-larry -omÞ²ø±»òýóãîä×Ö--
-ISTHISISTIM
谢谢
# 回答5


拉里·贝茨(Larry Bates)写道:
[...剪切代码...]
实际上,我也几乎也跟随这一点.我只是很忙
这是最近几天.仍然是,所以这个答案会很短:)
1)我不确定是否可以强迫WMI关闭系统流程,
但是,如果可以的话,可能是通过指定一个或多个
连接时特权.尝试在WMI新闻组中查看
对于更一般的(非Python)的回答,我会很高兴
说明如何在Python环境中应用它.
2)我无法从这个问题上看到问题所在
出现.您是否完全剪断了追溯,或者是
所有吗?你能把东西缩小到很短吗
我可能能够独立运行的代码段,
请?
对不起.
tjg
# 回答6


你好,
我使用VBS杀死这些过程,VBS也不能杀死这些过程.
导入WMI
从时间进口睡眠
c = wmi.wmi()
process_watcher = c.win32_process.watch_for("创建")
而真:
new_process = process_watcher()
如果new_process.caption =='Notepad.exe':
打印"开始杀人.."
睡眠(5)
结果= new_process.terminate()
打印"被杀"
我们必须手动启动Notepad.exe,然后(1)杀死Notepad.exe
通过此代码.
(2)我们在此代码之前杀死Notepad.exe.两者都会导致
错误.
# 回答7


情况(1):
结果= new_process.terminate()
typeError:'int'对象不可呼应
情况(2):
结果= new_process.terminate()
文件" c:\ python25 \ lib \ wmi.py",第494行,in __getAttr __
hander_com_error(error_info)
文件" c:\ python25 \ lib \ wmi.py",第190行,在handing_com_error中
提高x_wmi," \ n" .join(exception_string)
UNICODEDEDECODEERROR:" ASCII"编解码器无法解码字节0xB7位置
14:序数
不在范围(128)
顺便说一句,我的Windows的语言是中文.
# 回答8


巡逻队写道:
好吧,看起来像完全缺乏
WMI模块中的Unicode-nicode意识.你会
智力尝试此版本:http://timgolden.me.uk/wmi-project/wmi.py
这是SVN行李箱的副本,看看是否
请改善Unicodedecode错误吗?患病的
尝试安装非英语版本的
Windows但是,正如您可能想象的那样,我通常会运行
英国版本,所以不要遇到这类问题
我.
tjg
# 回答9


巡逻队写道:
我不确定到底是什么原因导致
特别效果,但我建议
您将该方法称为.Terminate(注意
首字母大写).在我的盒子上,打电话.
只是提出了预期的属性,
但是我确实记得遇到这种情况
您正在描述某些情况
现在逃脱了我.
无论如何,尝试使用:
结果,= new_process.terminate()
并注意retu RN值是元组,
不是一个数字.该代码将有效
方式,但是在您的情况下,"结果"将是元组
长度一;在我的结果中,结果将为一个数字.
tjg
# 回答10

http://timgolden.me.uk/wmi-project/wmi.py.py
它也无法正常工作.
我希望您可以在非英语版
# 回答11

上成功测试
Windows有时不敏感,但是Python对案例敏感.
我也遇到了这种问题.
感谢蒂姆的帮助.
巡逻
# 回答12


巡逻队写道:
它也无法正常工作.
那好吧.这只是一个快速的修复!我会尽力
要获得某种非ASCII版本的Windows
测试.据我了解,情况
是一些WMI例外(即来自
基础WMI/COM子系统)导致错误
包含非ASCII字符的消息.
只是我不是在追逐红色鲱鱼,你能吗
请从以下代码粘贴输出?
导入WMI#使用上面链接的版本<br />
c = wmi.wmi("不存在计算机")<br />
#<br />
#应该在此处为DCOM提供追溯<br />
#错误,不是Unicodedecodeerror.<br />
#

谢谢
tjg
# 回答13


在7ô-16èõ,!3ê3ê±29·Ö,Tim Golden 那好吧.这只是一个快速的修复!我会尽力
要获得某种非ASCII版本的Windows
测试.据我了解,情况
是一些WMI例外(即来自
基础WMI/COM子系统)导致错误
包含非ASCII字符的消息.
只是我不是在追逐红色鲱鱼,你能吗
请从以下代码粘贴输出?
导入WMI#使用上面链接的版本<br />
c = wmi.wmi("不存在计算机")<br />
#<br />
#应该在此处为DCOM提供追溯<br />
#错误,不是Unicodedecodeerror.<br />
#

谢谢
TJG
错误如下:
Trackback(最近的最新电话):
文件" D:\ My Documents \ Code \ Python \ wmi \ test.py",第5行,
c = wmi.wmi("不存在计算机")
文件" c:\ python25 \ lib \ wmi.py",第1199行,在连接中
hander_com_error(error_info)
文件" c:\ python25 \ lib \ wmi.py",第184行,在handing_com_error中
exception_string = [u"%s-%s"%(hex(hresult_code),
hresult_name)]
UNICODEDEDECODEERROR:" ASCII"编解码器无法解码字节0xB7位置
4:序数不在范围内(128)
巡逻
# 回答14


巡逻队写道:
好的,我正在尝试设置虚拟PC,以便我可以安装
非英语XP.但是你介意运行
请为我遵循代码,所以我可以得到一个处理
关于要回来的事情:
导入pythoncom<br />
导入win32com.client<br />
尝试:<br />
win32com.client.getObject(" winmgmts:// blahblah")<br />
除了pythoncom.com_error,信息:<br />
对于我的信息:<br />
打印reter(i)

谢谢
tjg
# 回答15


在7ô-16èõ,!10ê10ê±39·Ö,Tim Golden 好的,我正在尝试设置虚拟PC,以便我可以安装
非英语XP.但是你介意运行
请为我遵循代码,所以我可以得到一个处理
关于要回来的事情:
导入pythoncom<br />
导入win32com.client<br />
尝试:<br />
  win32com. client.getObject(" winmgmts:// blahblah")<br />
除了pythoncom.com_error,信息:<br />
  对于我的信息:<br />
    打印reter(i)

谢谢
TJG
-2147023174
'rpc \ xb7 \ xfe \ xce \ xf1 \ xc6 \ xf7 \ xb2 \ xb2 \ xbb \ xbf \ xbf \ xc9 \ xd3 \ xd3 \ xc3 \ xc3 \ x a1 a1 \ xa3'
没有任何
没有任何
------------------------------------------------------------------------------------ ----------------------------
导入pythoncom
导入win32com.client
尝试:
win32com.client.getObject(" winmgmts:// blahblah")
除了pythoncom.com_error,信息:
对于我的信息:
打印i
-2147023174
rpc·Þîñæ÷²»€Éó㣣
没有任何
没有任何
------------------------------------------------------------------------------------ ---------------------------------
'rpc \ xb7 \ xfe \ xce \ xf1 \ xc6 \ xf7 \ xb2 \ xb2 \ xbb \ xbf \ xbf \ xc9 \ xd3 \ xd3 \ xc3 \ xc3 \ x a1 a1 \ xa3'
------------------------------------------------------------------------------------ ---------------------------------
巡逻
# 回答16


巡逻队写道:
'rpc \ xb7 \ xfe \ xce \ xf1 \ xc6 \ xf7 \ xb2 \ xb2 \ xbb \ xbf \ xbf \ xc9 \ xd3 \ xd3 \ xc3 \ xc3 \ x a1 a1 \ xa3'
------------------------------------------------------------------------------------ ---------------------------------
巡逻
杰出的.谢谢,巡逻.因此错误消息又回来了
编码.您能确认您的控制台编码是什么,
请?以下脚本应确认:
导入OS,系统<br />
打印sys.stdout.encoding<br />
OS.System(" CHCP")

tjg
# 回答17


假设错误返回SYS.STDOUT编码,则以下版本 *应该 *工作正常.我仍然没有进行非英语设置来对其进行测试,但是它确实返回了Unicode错误消息. http://timgolden.me.uk/wmi-project/wmi.py
通常的测试案例,如果您不介意:
导入WMI<br />
WMI.WMI("不存在计算机")

应该提供(特定于语言的)错误消息,而不是Unicodedecodeerror
tjg
# 回答18


在7ô-16èõ,!11ê11ê±59·Ö,蒂姆·戈尔登 'rpc \ xb7 \ xfe \ xce \ xf1 \ xc6 \ xf7 \ xb2 \ xb2 \ xbb \ xbf \ xbf \ xc9 \ xd3 \ xd3 \ xc3 \ xc3 \ x a1 a1 \ xa3'
------------------------------------------------------------------------------------ ---------------------------------
巡逻

杰出的.谢谢,巡逻.因此错误消息又回来了
编码.您能确认您的控制台编码是什么,
请?以下脚本应确认:

导入OS,系统<br />
打印sys.stdout.encoding<br />
OS.System(" CHCP")

tjg -ò²ø±»»€×Ö--
-ISTHISISTIM

CP936
»¶´µä´úâëò³:936
0
'ascii'

# 回答19


在7ô17èõ,Éïîç12ê±16·Ö,Tim Golden ------------------------------------------------------------------------------------ -----------------------------------------------------
Trackback(最近的最新电话):
文件" ",第1行,<模块>
文件" c:\ python25 \ lib \ wmi.py",第1199行,在连接中
hander_com_error(error_info)
文件" c:\ python25 \ lib \ wmi.py",第184行,在handing_com_error中
exception_string = [u"%s-%s"%(hex(hresult_code),
hresult_name)]
UNICODEDEDECODEERROR:" ASCII"编解码器无法解码字节0xB7位置
4:序数
不在范围(128)
------------------------------------------------------------------------------------ -----------------------------------------------------
是的,error_info包含中文编码的字符串.所有简单的
中国窗户使用CP936.每个中文单词都使用两个
字节.也许您可以通过Modi修复此错误 fying hander_com_error.
巡逻
# 回答20


巡逻队写道:
Trackback(最近的最新电话):
文件" ",第1行,<模块>
文件" c:\ python25 \ lib \ wmi.py",第1199行,在连接中
hander_com_error(error_info)
文件" c:\ python25 \ lib \ wmi.py",第184行,在handing_com_error中
exception_string = [u"%s-%s"%(hex(hresult_code),
hresult_name)]
UNICODEDEDECODEERROR:" ASCII"编解码器无法解码字节0xB7位置
4:序数
不在范围(128)
------------------------------------------------------------------------------------ -----------------------------------------------------
是的,error_info包含中文编码的字符串.所有简单的
中国窗户使用CP936.每个中文单词都使用两个
字节.也许您可以通过修改handle_com_error修复此错误.

好吧,这就是我在最新版本中所做的.
我天真地假设
我可以使用sys.stdout.soding确定
编码.我必须更加努力.
tjg

# 回答21


巡逻队写道:
------------------------------------------------------------------------------------ -----------------------------------------------------
Trackback(最近的最新电话):
文件" ",第1行,<模块>
文件" c:\ python25 \ lib \ wmi.py",第1199行,在连接中
hander_com_error(error_info)
文件" c:\ python25 \ lib \ wmi.py",第184行,在handing_com_error中
exception_string = [u"%s-%s"%(hex(hresult_code),
hresult_name)]
UNICODEDEDECODEERROR:" ASCII"编解码器无法解码字节0xB7位置
4:序数
不在范围(128)
------------------------------------------------------------------------------------ -----------------------------------------------------
是的,error_info包含中文编码的字符串.所有简单的
中国窗户使用CP936.每个中文单词都使用两个
字节.也许您可以通过修改handle_com_error修复此错误.
您能确认最后一点
代码使用wmi.py的版本运行
目前在:http://timgolden.me.uk/wmi-project/wmi.py.py
该版本应该已经在解码
正确的字符串.
tjg
# 回答22


在7ô17èõ,Éïîç3ê±20·Ö,Tim Golden ------------------------------------------------------------------------------------ -----------------------------------------------------
Trackback(最近的最新电话):
文件" ",第1行,<模块>
文件" c:\ python25 \ lib \ wmi.py",第1199行,在连接中
hander_com_error(error_info)
文件" c:\ python25 \ lib \ wmi.py",第184行,在handing_com_error中
exception_string = [u"%s-%s"%(hex(hresult_code),
hresult_name)]
UNICODEDEDECODEERROR:" ASCII"编解码器无法解码字节0xB7位置
4:序数
不在范围(128)
------------------------------------------------------------------------------------ -----------------------------------------------------
是的,error_info包含中文编码的字符串.所有简单的
中国窗户使用CP936.每个中文单词都使用两个
字节.也许您可以通过修改handle_com_error修复此错误.

您能确认最后一点
代码使用wmi.py的版本运行
目前在:http://timgolden.me.uk/wmi-project/wmi.py.py
该版本应该已经在解码 这
正确的字符串.
TJG
------------------------------------------------------------------------------------ ----------------------------------------------------------
Trackback(最近的最新电话):
文件" ",第1行,在
wmi.wmi('不存在计算机')
文件" c:\ python25 \ lib \ wmi.py",第1199行,在连接中
hander_com_error(error_info)
文件" c:\ python25 \ lib \ wmi.py",第189行,在handing_com_error中
提高x_wmi,u" \ n" .join(exception_string)
x_wmi:<无法打印的x_wmi对象>
------------------------------------------------------------------------------------ -----------------------------------------------------------
# - * - 编码:UTF-8 - * -
导入WMI
从时间进口睡眠
c = wmi.wmi()
process_watcher = c.win32_process.watch_for("创建")
而真:
new_process = process_watcher()
如果new_process.caption =='Notepad.exe':
打印"开始杀人.."
睡眠(5)
结果= new_process.terminate()
打印"被杀"
当我手动杀死Notepad.exe时,也会导致错误.
Trackback(最近的最新电话):
文件" c:c:\ documents and stayings \ patrol \×àãæ\ test.py,第12行,in
<模块>
结果= new_process.terminate()
文件" c:\ python25 \ lib \ wmi.py",第396行,in __call __
hander_com_error(error_info)
文件" c:\ python25 \ lib \ wmi.py",第188行,在handing_com_error中
exception_string.append(u"%s-%s"%(hex(scode),
(error_description或
u"").解码(sys.stdout.encoding).strip()))
UnicenCodeError:" ASCII"编解码器无法在位置编码字符
0-2:ordin
Al不在范围内(128)
------------------------------------------------------------------------------------ -----------------------------------------------------------------------
巡逻

# 回答23


我会尝试修改wmi.py,但是我是新手.
很久.您可以暂时放弃它.如果你不介意,你能吗
告诉我在哪里需要修改以及如何修改?只是Unicode?或其他?
# 回答24


巡逻队写道:
好的.感谢您对此的耐心,巡逻.我建议的
要做的就是挖掘PYWIN32来源以确定发生了什么
关于何时获取错误消息.那我会更好地放置
决定在他们出来时该怎么办.在表面上,电流
模块应正确处理事情;但是我显然错过了
在某个地方进行编码/解码.
如果我能在此期间想到(甚至是hackish)解决方法,
我会告诉你.直到那时...
tjg
# 回答25


在7ô-17èõ,!4ê4ê±22·Ö,Tim Golden 好的.感谢您对此的耐心,巡逻.我建议的
要做的就是挖掘PYWIN32来源以确定发生了什么
关于何时获取错误消息.那我会更好地放置
决定在他们出来时该怎么办.在表面上,电流
模块应正确处理事情;但是我显然错过了
在某个地方进行编码/解码.
如果我能在此期间想到(甚至是hackish)解决方法,
我会告诉你.直到那时...
TJG
感谢蒂姆的帮助.
巡逻

标签: python

添加新评论