找回密码
 加入
搜索
查看: 7652|回复: 18

[系统综合] 同名进程如何终止指定的一个

 火.. [复制链接]
发表于 2012-3-4 13:03:32 | 显示全部楼层 |阅读模式
进程名smss.exe,想远程终止用户名为当前用户的那个
现在用taskkill会报进程无法终止



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



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

求大神给个思路,谢谢了
发表于 2012-3-4 15:38:10 | 显示全部楼层
本帖最后由 zch11230 于 2012-3-4 15:39 编辑

采用这个名字不是病毒的特性吗?那应该杀毒或重做系统吧.
获取该进程的路径 看是否为系统程序 严格点的可以对比MD5值之类的 不符合就结束这个PID
如果真的是病毒  有的也会提升自己的等级 无法用普通方法结束的.
发表于 2012-3-4 15:56:07 | 显示全部楼层
smss是系统进程,无法结束的吧
 楼主| 发表于 2012-3-4 17:19:16 | 显示全部楼层
回复 2# zch11230


    不是病毒,是一类教学广播软件会用这个办法隐藏关键进程,防止被轻易的认出而终止
 楼主| 发表于 2012-3-4 17:19:50 | 显示全部楼层
回复 3# amxi


    恩是要远程结束同名的进程,不是那个系统进程
发表于 2012-3-4 18:00:26 | 显示全部楼层
本帖最后由 nmgwddj 于 2012-3-4 18:20 编辑

回复 5# cj-reggie


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

_WinAPI_GetProcessFileName获取路径根据pid结束
发表于 2012-3-4 18:22:03 | 显示全部楼层
回复 6# nmgwddj


    大哥,AU3里没有那函数,是否写错?
发表于 2012-3-4 18:23:41 | 显示全部楼层
回复 7# pp648852


    WinAPIEx.au3内,我在3372的版本上用过。最新帮助文档也可以搜索到。
发表于 2012-3-4 18:24:19 | 显示全部楼层
WinAPI_GetProcessFileName 
--------------------------------------------------------------------------------

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


#Include <WinAPIEx.au3>
_WinAPI_GetProcessFileName ( [$PID] )
发表于 2012-3-4 19:17:22 | 显示全部楼层
回复 8# nmgwddj


    原来还是得用最新版本啊,难怪!
发表于 2012-3-4 20:28:29 | 显示全部楼层
学习,顶贴,赚钱哈
 楼主| 发表于 2012-3-4 22:13:51 | 显示全部楼层
回复 6# nmgwddj


    有道理,那思路就是先查找所有smss.exe进程的pid,然后根据_WinAPI_GetProcessFileName返回路径判断应该禁止的那个smss.exe进程,杀之
对么?
 楼主| 发表于 2012-3-4 22:14:13 | 显示全部楼层
回复 7# pp648852


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

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


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




参数

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



返回值

成功: 返回文件的完整路径.
失败: 返回空串,设置@error:标志为非 0 值.
发表于 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
发表于 2012-3-5 01:33:07 | 显示全部楼层
根据pid结束
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-20 05:25 , Processed in 0.080076 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表