Mar*_*rco 3 vbscript pid admin path
我正在尝试检索特定位置中软件的所有实例的 PID。这是一个便携式应用程序,因此整个系统中可能有它的多个副本,但我只对一个特定位置感兴趣。此外,它可以由不同的用户、管理员和标准用户同时启动。
我复制了这个 VBS 代码(来自http://msdn.microsoft.com/en-us/library/windows/desktop/aa394372%28v=vs.85%29.aspx)
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'foobar.exe'")
For Each objProcess in colProcesses
If objProcess.GetOwner(User, Domain) = 0 Then
WScript.Echo "Process " & objProcess.Name & " belongs to " & Domain & "\" & User
Else
WScript.Echo "Problem " & Rtn & " getting the owner for process " & objProcess.Caption
End If
Next
Run Code Online (Sandbox Code Playgroud)
我现在需要区分应用程序的完整路径。如果我使用objProcess.ExecutablePath(第 5 行),我只能看到当前用户启动的实例的完整路径,而使用Where ExecutablePath(第 3 行)会出现某种语法错误。
有什么帮助吗?
如文档所述,您需要管理员权限(更具体地说SeDebugPrivilege)才能查看其他用户的进程。
使用Where ExecutablePath = '...'子句时出现的语法错误可能是因为您没有在路径中转义反斜杠。WMI 查询中的反斜杠具有特殊含义的转义字符,因此您需要将它们加倍以获得文字反斜杠:
Select * From Win32_Process Where ExecutablePath = 'C:\\Windows\\notepad.exe'
Run Code Online (Sandbox Code Playgroud)
不过,我只是在这里猜测,因为您决定省略带有 Where 子句的实际查询及其引发的错误。
| 归档时间: |
|
| 查看次数: |
2213 次 |
| 最近记录: |