分享

如何中止某个具有特定 PID 的进程?

 星爷 2006-04-28

如何中止某个具有特定 PID 的进程?

问:

嗨,Scripting Guy!如果我知道进程的 PID,是否可以使用脚本中止这个进程?

-- JV

答:

嗨,JV。当然可以。致那些不太熟悉缩写的同志们:PID 是“进程标识符”(Process Identifier) 的缩写,这是创建进程时分配给它的唯一的身份证号码。(好吧,是暂时唯一:进程中止后,这个号码就会被回收,并可能被分配给另一个新进程。)WMI 类 Win32_Process 中有一个属性 (ProcessId) 对应于 PID。假设您想要中止 PID 为 2576 的进程,以下脚本就可以做这件事情:

strComputer = "."
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where ProcessID = 2576")
For Each objProcess in colProcessList
objProcess.Terminate()
Next

当然,您要记住 PID 是会经常变化的:尽管您现在要中止的进程的 PID 可能是 2576,但下一次创建时它可能就不会具有相同的 PID。因此,将 PID 值硬编码进来是不行的,您可能需要对这个脚本进行修改,以便它可以接受任何 PID 作为命令行参数:

If Wscript.Arguments.Count = 0 Then
Wscript.Echo "You must enter a PID."
Wscript.Quit
End If
intPID = Wscript.Arguments.Item(0)
strComputer = "."
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where ProcessID = " & intPID & "")
For Each objProcess in colProcessList
objProcess.Terminate()
Next

在上述脚本中,我们首先检查是否输入了命令行参数;如果没有输入任何命令行参数,我们就回显一条错误信息 (“You must enter a PID.”),然后退出。如果输入了一个参数,我们就使用以下代码将第一个参数分配给变量 intPID:

intPID = Wscript.Arguments.Item(0)

那么如果我们输入多个命令行参数呢?哦,在上述这段简单的脚本中,我们会忽略其他参数。不过您可以修改这个脚本,以便中止与您具有的 PID 对应的多个进程。有关如何实现的更多信息,请访问以下脚本故事 专栏。

为 intPID 赋值后,我们使用 Win32_Process 类来定位这个进程并中止它。注意我们不是将 PID 硬编码进来,而是使用变量 intPID:

("Select * from Win32_Process Where ProcessID = " & intPID & "")

如果您不调用这段代码,也可以使用名称(而不用 PID)来中止进程。例如,以下脚本可中止计算机上运行的所有 Notepad.exe 实例:

strComputer = "."
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = ‘Notepad.exe‘")
For Each objProcess in colProcessList
objProcess.Terminate()
Next

上面说过,这段代码中止的是所有 Notepad 实例。如果您只想中止特定实例,请使用 PID。这是因为 PID 对正在运行的进程来说是唯一的,而名称则不是。换句话说,PID 为 2576 的进程只有一个,但名称为 Notepad.exe 的进程却可能有很多。

有关使用脚本管理进程的更多信息,请参阅以下地址的相关部分“Microsoft Windows 2000 脚本编写指南”.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多