我一直在寻找一种方法来查找与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类型...有谁知道如何解决这个问题?
答案 0 :(得分:0)
以下SO帖子可能有用。我没有使用/测试它,但代码示例应该可以在2010-04-12发布 .NET Framework 4.0 (wikipedia reference),这个SO帖子可以追溯到2009年4月< / p>
答案 1 :(得分:-1)
很抱歉只是重新阅读您的问题,并意识到您正在追踪特定流程的用户,而不是您正在构建的应用程序的用户,因此以下内容并不适用。
我会留在这里,以防它对某人有用。
尝试My.User.Name
相当肯定这会做你想要的,我没有能力检查它我在哪里,但我已经使用它早在3.5我相信。