How do I determine the owner of a process in C#?
public string GetProcessOwner(int processId)
{
string query = "Select * From Win32_Process Where ProcessID = " + processId;
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection processList = searcher.Get();
foreach (ManagementObject obj in processList)
{
string[] argList = new string[] { string.Empty, string.Empty };
int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));
if (returnVal == 0)
{
// return DOMAIN\user
return argList[1] + "\\" + argList[0];
}
}
return "NO OWNER";
}
我详细研究并实现了上面给出的代码。此代码工作正常,但只获取32位进程的所有者名称。该方法返回"没有所有者"对于64位进程。 请帮助我,我如何获得32位进程和64位进程的进程所有者名称。
答案 0 :(得分:3)
不,该代码可以正常工作"罚款"。当你的代码是32位但目标进程是64位时,它也可以工作,所以这里也没有问题。
可能的原因,你可以得到"没有所有者":