同名进程如何终止指定的一个
进程名smss.exe,想远程终止用户名为当前用户的那个现在用taskkill会报进程无法终止
taskkill /S a0 /fi“USERNAME eq admin*” /IM SMSS.EXE
这句是终止a0计算机上用户名开头是admin的smss。exe进程么?
运行提示进程为关键进程无法终止(应该用户名是system的那个才无法终止)
求大神给个思路,谢谢了 本帖最后由 zch11230 于 2012-3-4 15:39 编辑
采用这个名字不是病毒的特性吗?那应该杀毒或重做系统吧.
获取该进程的路径 看是否为系统程序 严格点的可以对比MD5值之类的 不符合就结束这个PID
如果真的是病毒有的也会提升自己的等级 无法用普通方法结束的. smss是系统进程,无法结束的吧 回复 2# zch11230
不是病毒,是一类教学广播软件会用这个办法隐藏关键进程,防止被轻易的认出而终止 回复 3# amxi
恩是要远程结束同名的进程,不是那个系统进程 本帖最后由 nmgwddj 于 2012-3-4 18:20 编辑
回复 5# cj-reggie
不管他名字是否一样,他的路径肯定是不一样的
_WinAPI_GetProcessFileName获取路径根据pid结束 回复 6# nmgwddj
大哥,AU3里没有那函数,是否写错? 回复 7# pp648852
WinAPIEx.au3内,我在3372的版本上用过。最新帮助文档也可以搜索到。 WinAPI_GetProcessFileName
--------------------------------------------------------------------------------
检索指定进程可执行文件的完整路径.
#Include <WinAPIEx.au3>
_WinAPI_GetProcessFileName ( [$PID] )
回复 8# nmgwddj
原来还是得用最新版本啊,难怪! 学习,顶贴,赚钱哈 回复 6# nmgwddj
有道理,那思路就是先查找所有smss.exe进程的pid,然后根据_WinAPI_GetProcessFileName返回路径判断应该禁止的那个smss.exe进程,杀之
对么? 回复 7# pp648852
函数参考
_WinAPI_GetProcessFileName
--------------------------------------------------------------------------------
检索指定进程可执行文件的完整路径.
#Include <WinAPIEx.au3>
_WinAPI_GetProcessFileName ( [$PID] )
参数
$PID [可选参数] 进程 PID. 默认 0, 为当前进程.
返回值
成功: 返回文件的完整路径.
失败: 返回空串,设置@error:标志为非 0 值. 回复 1# cj-reggie
如果杀别的机器进程最好用WMI了,API很不好使,还要写好远程让其执行程序得到回执做动作,根据楼上提示判断进程名为smss.exe和进程的可执行文件的路径不是C:\windows\system32\smss.exe的的查杀进程$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$strComputer = "."
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Process", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
For $objItem In $colItems
If $objItem.Description = "smss.exe" And $objItem.ExecutablePath <> "C:\windows\system32\smss.exe" Then
$objItem.Terminate
EndIf
Next 根据pid结束
页:
[1]
2