当前位置:  开发笔记 > 编程语言 > 正文

如何获得进程所有者的UserName?

如何解决《如何获得进程所有者的UserName?》经验,为你挑选了2个好方法。

我正在尝试获取当前用户(Environment.UserName)当前拥有的进程列表.不幸的是,Process该类没有任何方法来获取用户拥有进程的UserName.

如何获取用户的UserName,该用户是使用Process该类的进程的所有者,因此我可以将其与之进行比较Environment.UserName

如果您的解决方案需要pinvoke,请提供代码示例.



1> Andrew Moore..:

谢谢,你的回答让我走上了正确的道路.对于那些需要代码示例的人:

public class App
{
    public static void Main(string[] Args)
    {
        Management.ManagementObjectSearcher Processes = new Management.ManagementObjectSearcher("SELECT * FROM Win32_Process");

        foreach (Management.ManagementObject Process in Processes.Get()) {
            if (Process["ExecutablePath"] != null) {
                string ExecutablePath = Process["ExecutablePath"].ToString();

                string[] OwnerInfo = new string[2];
                Process.InvokeMethod("GetOwner", (object[]) OwnerInfo);

                Console.WriteLine(string.Format("{0}: {1}", IO.Path.GetFileName(ExecutablePath), OwnerInfo[0]));
            }
        }

        Console.ReadLine();
    }
}



2> Martin Holli..:

在CodeProject上的文章如何让流程所有者的ID和当前用户的SID由Warlib介绍了如何同时使用WMI,并使用通过的PInvoke在Win32 API来做到这一点.

WMI代码更简单,但执行速度较慢.您的问题并未表明哪种情况更适合您的方案.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有