进程识别?
系统下面有多个进程名一样的进程(如:svchost,smss).怎么识别出需要的进程PID。 那位帮忙。如果我没有说清楚的话。可以跟帖说声 没明白你说的是什么,没猜错的话,继续枚举线程 PowerTool可以做到吧 因为是这样的。我这边网吧系统里面被收费软件安装上了广告软件。广告进程是SMSS.exe
跟系统进程是一样的。我现在想用AU3做个脚本结束它。
进程名一样。我没办法枚举出它是PID呀 运行命令应该可以分辨出区别吧。
#Include <Array.au3>
#Include <WinAPIEx.au3>
Local $svchost
$list = ProcessList()
For $i = 1 To $list
If $list[$i] = 'svchost.exe' Then
Redim $svchost
$Data = _WinAPI_GetCommandLineFromPID($list[$i])
$svchost=$list[$i]
$svchost=$Data
$svchost=$list[$i]
$svchost=UBound($svchost)
EndIf
Next
_ArrayDisplay($svchost) 根据路径识别就可以了
论坛有WMI获取路径的,你搜搜 我想这个应该适合你,源码好像是三恨写的#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=D:\autoit3\Aut2Exe\Icons\Fonts6.ico
#AutoIt3Wrapper_outfile=Kill_proc.exe
#AutoIt3Wrapper_Res_Comment=根据程序路径结束进程,可结束改名为 smss.exe 的非系统进程。
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#NoTrayIcon
;---------------------------------------------设置使用帮助信息
If $CmdLine[$CmdLine] = "" then
Msgbox(4096,"帮助",'参数设置:文件路径必须是完整的' & @CRLF & @CRLF & "例 c:\windows\system32\smss.exe")
exit
endif
;--------------------------------检测是否存在这个文件,不是就自动退出
if Not FileExists($CmdLine) then
MsgBox(4096, "错误!", "指定的程序不存在 ,程序将自动退出。")
exit
endif
ProcessClosePath($CmdLine) ;程序主体就这一句,调用下面的函数
Func ProcessClosePath($Path)
;作用:根据程序路径结束进程
;返回:当WMI对象不存在,返回错误值1
Local $wbemFlagReturnImmediately
Local $wbemFlagForwardOnly
Local $strComputer,$objWMIService
Local $colItems,$objItem
$strComputer = "localhost"
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$Path= StringReplace($Path,"\","\\")
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Process Where ExecutablePath="'&$Path&'"', "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
$objItem.Terminate()
Next
Else
SetError(1)
Endif
EndFunc
页:
[1]