[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 是否可以用批处理终止指定路径的进程

目前被一个病毒所困扰,想用批处理去解决他,问题是这样的:

这个病毒与系统的正常进程lsass.exe同名,这样如果在批处理中写入taskkill lsass.exe,那么正常进程也杀掉了,怎么才能选择性的结束同名的进程呢?

我有一个思路,不知可行不可行,请大家指正

1.用一个命令列出符合要求的进程(符合病毒路径),同时获取此进程的PID,将此PID写入一个txt
2.用一个命令获取txt中病毒进程的PID,并终止此pid

大家一定要帮帮我!用什么命令行工具,如何写代码,或有更好的思路

这么高深的东西暂时不是我初学者涉及的地方

TOP

回复 15# L592181260


    具体需要哪方面的教程?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

大神们有没有这方面的教程

TOP

原帖由 fastslz 于 2008-3-26 12:50 发表
单条wmic命令不需要for 的
杀死除C:\WINDOWS\system32\lsass.exe以外的进程
wmic process where "name='lsass.exe' and ExecutablePath'C:\\WINDOWS\\system32\\lsass.exe'" call Terminate

杀死绝对路径C:\WIN ...

-----------------------------------------------------------------------------------------------------------------

谢谢。但是这样是不能终止进程了,我试过了。如果调用PSKILL的话,需给出pid

TOP

单条wmic命令不需要for 的
杀死除C:\WINDOWS\system32\lsass.exe以外的进程
wmic process where "name='lsass.exe' and ExecutablePath<>'C:\\WINDOWS\\system32\\lsass.exe'" call Terminate

杀死绝对路径C:\WINDOWS\system32\com\lsass.exe的进程
wmic process where "name='lsass.exe' and ExecutablePath='C:\\WINDOWS\\system32\\com\\lsass.exe'" call Terminate

[ 本帖最后由 fastslz 于 2008-3-26 12:55 编辑 ]

TOP

高调感谢Kclmx,帮助我解决此问题,现将代码放出

@echo off
setlocal enabledelayedexpansion
set "str=wmic process where caption="smss.exe" get ExecutablePath^,Handle"
for /f "skip=1 tokens=*" %%i in ('!str!') do (
  for /f "tokens=1-2" %%a in ("%%i") do (
    if /i not "%%a"=="!systemroot!\system32\smss.exe" (call pskill %%b)
  )
)
pause

注:PsKill为结束进程工具

TOP

回KCLMX

非常感谢你的耐心回答。

首先我现在测试的不是真的病毒环境。
我将一个正常程序改名为smss.exe,再运行它。这样系统中有两个smss.exe,然后运行你给的那个bat,结果显示:无可用范例。

我不知道是不是结束不了还是错误。关于IceSword,不是不想用,而是他已经被病毒禁掉了,大部分安全工具都被禁用了,何况我想批量的解决问题。针对这个病毒而言,用批处理要做的东西很多,比如修复注册表,修复安全模式,卸载dll等,现在唯一出问题的就是如何有针对性的结束同名的进程。

另外命令结束进程工具比较强的是PSKILL,你是否可以把此工具应用到上述BAT呢。
PsKill的命令格式  PsKill pid or name

如何可以,我想是能不能加MSN或QQ聊聊,再次感谢

TOP

回KCLMX

还是不行

能不能同时获取smss的路径和pid写入文本,比较文本的第一行和第二行内容取指定内容的行,提取PID赋值,再用结束进程的命令或工具结束pid呢

TOP

现在还出了一个问题,不知道怎么回事

TOP

回复 10楼 的帖子

此时不应有 takens=*"。
是因为楼上匆忙中写错了,应该是  tokens=*
你再试试 3 楼的代码,已作更改。。

[ 本帖最后由 随风 于 2008-3-25 18:29 编辑 ]
技术问题请到论坛发帖求助!

TOP

谢谢kclmx,但是出了个错误:

此时不应有 takens=*"。
请按任意键继续. . .

TOP

谢谢楼上,那么如果我就要结束%windir%\system\com\smss.exe这个进程,但是不想结束正常的SMSS.exe呢

TOP

随风,我按你的去做了后,发现他会试图结束两个进程

TOP

我没看你的第二个回帖,不好意思,我现在去试一下

TOP

返回列表