要得到切实可靠的PID理论上是可行的,但为了让批处理执行是更人性化一点添加过多代码有顾此失彼的歉疑
以cscript.exe执行这个脚本即可得到cmd的PID- Dim Wsh,Wmi
- Set Wsh=CreateObject("WScript.Shell")
- Set Wmi=GetObject("winmgmts:\\.\root\cimv2")
- Set Hta=Wsh.Exec("mshta 1")
- For Each i In Wmq(Hta.ProcessID)
- WScript.Echo "脚本PID :" & i.ParentProcessID
- For Each j In Wmq(i.ParentProcessID)
- WScript.Echo "脚本命令行 :" & j.CommandLine & vbCrLf &_
- "脚本父进程PID :" & j.ParentProcessID
- For Each k In Wmq(j.ParentProcessID)
- WScript.Echo "脚本父进程名称:" & k.Name & vbCrLf &_
- "脚本父进程命令:" & k.CommandLine
- Next
- Next
- Next
- Hta.Terminate
-
- Function Wmq(Pid)
- Set Wmq=Wmi.ExecQuery("Select * From Win32_Process Where ProcessID='" & Pid & "'")
- End Function
复制代码
|