cj-reggie 发表于 2012-3-4 13:03:32

同名进程如何终止指定的一个

进程名smss.exe,想远程终止用户名为当前用户的那个
现在用taskkill会报进程无法终止



taskkill /S a0 /fi“USERNAME eq admin*” /IM SMSS.EXE
这句是终止a0计算机上用户名开头是admin的smss。exe进程么?



运行提示进程为关键进程无法终止(应该用户名是system的那个才无法终止)

求大神给个思路,谢谢了

zch11230 发表于 2012-3-4 15:38:10

本帖最后由 zch11230 于 2012-3-4 15:39 编辑

采用这个名字不是病毒的特性吗?那应该杀毒或重做系统吧.
获取该进程的路径 看是否为系统程序 严格点的可以对比MD5值之类的 不符合就结束这个PID
如果真的是病毒有的也会提升自己的等级 无法用普通方法结束的.

amxi 发表于 2012-3-4 15:56:07

smss是系统进程,无法结束的吧

cj-reggie 发表于 2012-3-4 17:19:16

回复 2# zch11230


    不是病毒,是一类教学广播软件会用这个办法隐藏关键进程,防止被轻易的认出而终止

cj-reggie 发表于 2012-3-4 17:19:50

回复 3# amxi


    恩是要远程结束同名的进程,不是那个系统进程

nmgwddj 发表于 2012-3-4 18:00:26

本帖最后由 nmgwddj 于 2012-3-4 18:20 编辑

回复 5# cj-reggie


    不管他名字是否一样,他的路径肯定是不一样的

_WinAPI_GetProcessFileName获取路径根据pid结束

pp648852 发表于 2012-3-4 18:22:03

回复 6# nmgwddj


    大哥,AU3里没有那函数,是否写错?

nmgwddj 发表于 2012-3-4 18:23:41

回复 7# pp648852


    WinAPIEx.au3内,我在3372的版本上用过。最新帮助文档也可以搜索到。

nmgwddj 发表于 2012-3-4 18:24:19

WinAPI_GetProcessFileName
--------------------------------------------------------------------------------

检索指定进程可执行文件的完整路径.


#Include <WinAPIEx.au3>
_WinAPI_GetProcessFileName ( [$PID] )

pp648852 发表于 2012-3-4 19:17:22

回复 8# nmgwddj


    原来还是得用最新版本啊,难怪!

sellkingfly 发表于 2012-3-4 20:28:29

学习,顶贴,赚钱哈

cj-reggie 发表于 2012-3-4 22:13:51

回复 6# nmgwddj


    有道理,那思路就是先查找所有smss.exe进程的pid,然后根据_WinAPI_GetProcessFileName返回路径判断应该禁止的那个smss.exe进程,杀之
对么?

cj-reggie 发表于 2012-3-4 22:14:13

回复 7# pp648852


    函数参考
_WinAPI_GetProcessFileName
--------------------------------------------------------------------------------

检索指定进程可执行文件的完整路径.


#Include <WinAPIEx.au3>
_WinAPI_GetProcessFileName ( [$PID] )




参数

$PID [可选参数] 进程 PID. 默认 0, 为当前进程.



返回值

成功: 返回文件的完整路径.
失败: 返回空串,设置@error:标志为非 0 值.

502762378 发表于 2012-3-5 00:47:12

回复 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

dd20121221 发表于 2012-3-5 01:33:07

根据pid结束
页: [1] 2
查看完整版本: 同名进程如何终止指定的一个