获取流程的所有用户

本文关键字:用户 获取 | 更新日期: 2023-09-27 18:08:03

我使用WMI来获取当前正在运行的所需进程的用户名。它在windows XP中正常工作,并返回所有运行进程的用户(例如:notepad.exe)

但是在windows 8中,它只返回当前用户,运行该进程的其他用户将不会出现。当我检查时,我发现returnVal是2(拒绝访问)而不是0。但我是用管理用户运行的。以管理员身份运行正常。有什么解决办法吗?或者,请给我一个替代方案,可以得到所有用户的过程。

 Public Function GetProcessOwner(ByVal processName As String) As String
        Dim query As String = (Convert.ToString("Select * from Win32_Process Where Name = """) & processName) + """"
        Dim searcher As New ManagementObjectSearcher(query)
        Dim owner As String
        Dim processList As ManagementObjectCollection = searcher.[Get]()
        For Each obj As ManagementObject In processList
            Dim argList As String() = New String() {String.Empty, String.Empty}
            Dim returnVal As Integer = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList))
            If returnVal = 0 Then

                owner = owner & " " & argList(0)
            End If
        Next
        Return Owner
    End Function

获取流程的所有用户

从Windows Vista开始,由于新的安全模型,您现在需要具有提升的特权才能访问当前用户未运行的进程的属性。很多其他的事情也是一样的,比如写程序文件,访问HKLM…等等。

所以基本上你需要启动你的进程。运行提升进程