如何获取与进程关联的Windows用户名(在Framework 4.0中)

时间:2015-10-12 10:58:32

标签: vb.net .net-4.0

我一直在寻找一种方法来查找与widows 7及更高版本上的指定进程关联的用户名(如果在进程选项卡中打开任务管理器,我想提供图像名称以获取用户名)。这不一定是当前用户。

通过我的在线搜索,我发现以下解决方案出现了几次,它确实完全符合我的要求:

Public Shared Sub Main()
    Dim selectQuery As SelectQuery = New SelectQuery("Win32_Process")
    Dim searcher As ManagementObjectSearcher = New
    ManagementObjectSearcher(selectQuery)
    For Each proc As ManagementObject In searcher.Get
    Console.WriteLine(proc("Name").ToString)
        Dim s(1) As String
        proc.InvokeMethod("GetOwner", CType(s, Object()))
        Console.WriteLine(("User: " & (s(1) + ("\\" + s(0)))))
    Next
    Console.ReadLine()
End Sub

我唯一的问题是此代码仅适用于框架4.5及更高版本。我目前正在开发的应用程序只有4.0(不幸的是我的选择)。

有没有人有这个问题的框架4.0解决方案?

由于

编辑:好的,所以事实证明我是一个白痴,上面的方法中使用的所有东西都支持.net 4.0(我忘了你必须使用下载MSDN以查看较旧的受支持版本)....我已将system.management导入添加到我的类但是它似乎没有识别SelectQuery和ManagementObjectSearcher类型...有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

以下SO帖子可能有用。我没有使用/测试它,但代码示例应该可以在2010-04-12发布 .NET Framework 4.0 wikipedia reference),这个SO帖子可以追溯到2009年4月< / p>

how-do-i-determine-the-owner-of-a-process-in-c 2009年4月

答案 1 :(得分:-1)

很抱歉只是重新阅读您的问题,并意识到您正在追踪特定流程的用户,而不是您正在构建的应用程序的用户,因此以下内容并不适用。

我会留在这里,以防它对某人有用。

尝试My.User.Name相当肯定这会做你想要的,我没有能力检查它我在哪里,但我已经使用它早在3.5我相信。