huguanglai 发表于 2010-9-15 00:27:49

进程识别?

系统下面有多个进程名一样的进程(如:svchost,smss).怎么识别出需要的进程PID。

huguanglai 发表于 2010-9-15 00:58:15

那位帮忙。如果我没有说清楚的话。可以跟帖说声

netegg 发表于 2010-9-15 03:10:43

没明白你说的是什么,没猜错的话,继续枚举线程

少马石 发表于 2010-9-15 06:53:09

PowerTool
可以做到吧

huguanglai 发表于 2010-9-15 10:03:48

因为是这样的。我这边网吧系统里面被收费软件安装上了广告软件。广告进程是SMSS.exe
跟系统进程是一样的。我现在想用AU3做个脚本结束它。
    进程名一样。我没办法枚举出它是PID呀

3mile 发表于 2010-9-15 10:24:41

运行命令应该可以分辨出区别吧。
#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)

landays 发表于 2010-9-15 10:27:54

根据路径识别就可以了
论坛有WMI获取路径的,你搜搜

zjg2003 发表于 2010-9-16 16:46:12

我想这个应该适合你,源码好像是三恨写的#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]
查看完整版本: 进程识别?