我使用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
您是否在升高的過程中運行它? –
這看起來不像C#:) – derape
@derape它的一小段代碼。 C#代碼解決方案也受到歡迎。 –