Board logo

标题: 检查所有进程的路径是否含有指定字符 [打印本页]

作者: ooaf     时间: 2009-2-9 17:56    标题: 检查所有进程的路径是否含有指定字符

检查所有进程的路径是否含有指定字符 music ,Sunday , five ,如果含有指定字符music  Sunday  five ,则把"程序名" 保存到a.txt

我只知道 wmic process where name="XX" get executablepath .能获得某个程序的路径,可不知如何得到所有程序的路径。
作者: zhengqian529     时间: 2009-2-9 18:25
可以使用wbemtest,获取root\cimv2下的win32_process的信息。
CODE:  [Copy to clipboard]
strComputer="."

Set wbemServices=GetObject("winmgmts:\\"&strComputer&"\root\cimv2")
Set wbemObjectSet=wbemServices.InstancesOf("Win32_Process")

For Each wbemObject In wbemObjectSet
    WScript.Echo "Process:"&wbemObject.Description&vbCrlf&_
                 "Name   :"&wbemObject.Name&vbCrlf&_
                 "Handle :"&wbemObject.Handle&vbCrlf&_
                 "ProcessID:"&wbemObject.ProcessId&vbCrlf&_
                 "ExecutablePath"&wbemObject.ExecutablePath&vbCrlf
Next

作者: lxmxn     时间: 2009-2-9 18:39
去掉where子句即可:wmic process get executablepath
作者: zhengqian529     时间: 2009-2-9 19:14
保存为vbs文件,然后执行,test.txt保存了所有process的路径。但是我想对test.txt进行加个for语句的时候,出错,不知道如何解决,希望其他人能够帮助修改一下
CODE:  [Copy to clipboard]
strComputer="."

Set wshShell=CreateObject("WScript.Shell")
Set wbemServices=GetObject("winmgmts:\\"&strComputer&"\root\cimv2")
Set wbemObjectSet=wbemServices.InstancesOf("Win32_Process")

For Each wbemObject In wbemObjectSet
    WScript.Echo "Process:"&wbemObject.Description&vbCrlf&_
                 "Name   :"&wbemObject.Name&vbCrlf&_
                 "Handle :"&wbemObject.Handle&vbCrlf&_
                 "ProcessID:"&wbemObject.ProcessId&vbCrlf&_
                 "ExecutablePath"&wbemObject.ExecutablePath&vbCrlf
    WshShell.Run "cmd /c echo """&wbemObject.ExecutablePath&""""&">>"&"test.txt",1,true
   
Next

作者: zhengqian529     时间: 2009-2-10 14:43
研究了一下,终于有结果了。以下是我的代码,a.txt存放了那些进程名
CODE:  [Copy to clipboard]
strComputer="."

Set wshShell=CreateObject("WScript.Shell")
Set wbemServices=GetObject("winmgmts:\\"&strComputer&"\root\cimv2")
Set wbemObjectSet=wbemServices.InstancesOf("Win32_Process")

For Each wbemObject In wbemObjectSet
    WScript.Echo "Process:"&wbemObject.Description&vbCrlf&_
                 "Name   :"&wbemObject.Name&vbCrlf&_
                 "Handle :"&wbemObject.Handle&vbCrlf&_
                 "ProcessID:"&wbemObject.ProcessId&vbCrlf&_
                 "ExecutablePath"&wbemObject.ExecutablePath&vbCrlf
    WshShell.Run "cmd /c echo """&wbemObject.ExecutablePath&""""&">"&"test.txt",1,true
    WshShell.Run "cmd /c for /f %i in ('findstr /I ""windows program"" test.txt') do echo """&wbemObject.Name&""""&">>"&"a.txt"
Next

作者: zhengqian529     时间: 2009-2-10 14:45
疏忽了一点,请你使用的时候将我倒数第三句里面的windows program替换为你想作为查询条件的字符串,我的回复不是为了得分哦。请版主高抬贵手。
作者: ooaf     时间: 2009-2-10 15:36
多谢zhengqian529兄支持!
作者: zhengqian529     时间: 2009-2-10 16:19
没事,我也是一新手,大家互相帮助嘛。




欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) Powered by Discuz! 2.5