gpt4 book ai didi

process - 如何获取WMI中的所有用户进程

转载 作者:行者123 更新时间:2023-12-02 16:09:16 25 4
gpt4 key购买 nike

我想获取任务管理器进程中所述的所有用户进程(系统、管理员、网络服务和本地服务)。

我需要通过WMI获取它,我找不到每个进程的用户名,我检查了wmi进程和任务管理器进程,wmi仅显示管理员进程。

你能帮我获取所有用户的进程列表吗???

最佳答案

也许有点晚了,但我认为可以通过 Win32_Process 类的 GetOwner() 方法使用 WMI,该方法检索用户名和域(下面的代码不是我的,我已从 http://social.msdn.microsoft.com/Forums/en-US/d842c407-18f5-478b-8c4f-7e14ac4fbbe6/get-owner-of-curently-runing-procesess 中提取了它):

using System;
using System.Diagnostics;
using System.Management; // Add reference to System.Management!!

class Program {
static void Main(string[] args) {
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_Process");

foreach (ManagementObject queryObj in searcher.Get()) {
ManagementBaseObject outParams =
queryObj.InvokeMethod("GetOwner", null, null);
Console.WriteLine("{0} owned by {1}\\{2}", queryObj["Name"],
outParams["Domain"], outParams["User"]);
}
Console.ReadLine();
}
}

此外,如果您有兴趣,可以使用 vbscript 使用以下代码来确定正在运行进程的帐户名称(有关更多详细信息,请参阅下页 http://msdn.microsoft.com/en-us/library/aa394599(v=vs.85).aspx ):

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process")
For Each objProcess in colProcessList
colProperties = objProcess.GetOwner( _
strNameOfUser,strUserDomain)
Wscript.Echo "Process " & objProcess.Name _
& " is owned by " _
& strUserDomain & "\" & strNameOfUser & "."
Next

希望对你有帮助!

关于process - 如何获取WMI中的所有用户进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15269677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com