2012-02-26 19 views
0

リモートマシン上で実行されているプロセスのリストとそのユーザー名を取得しようとしています。これまでのところ私が持っている:リモートマシン上でプロセスを実行しているユーザーを調べる

Dim ps As System.Diagnostics.Process 
For Each ps In System.Diagnostics.Process.GetProcesses("myserver") 
    ListBox1.Items.Add(ps.ProcessName) 
Next 
+0

コードを実行するとどうなりますか? myserverにアクセスする権限がありますか? –

+0

コードはうまく動作します!私はちょうどどの属性が私にプロセスを実行するユーザ名を与えるのかを知る必要があります – erez

答えて

0

How to get permissions for using System.Diagnostics.Process.GetProcess(string)? - これはそれを行うには良い方法かもしれません。あなたが望むなら、それはC#で翻訳することができます。

''' using System.Management; 
' don't forget! in VS you may have to add a new reference to this DLL 
Dim op As New ConnectionOptions() 
op.Username = "REMOTE_USER" 
op.Password = "REMOTE_PASSWORD" 

Dim sc As New ManagementScope("\\REMOTE_COMPUTER_NAME\root\cimv2", op) 

Dim query As New ObjectQuery("Select * from Win32_Process") 

Dim searcher As New ManagementObjectSearcher(sc, query) 
Dim result As ManagementObjectCollection = searcher.[Get]() 

For Each obj As ManagementObject In result 
    If obj("Caption") IsNot Nothing Then 
     Console.Write(obj("Caption").ToString() & vbTab) 
    End If 
    If obj("CommandLine") IsNot Nothing Then 
     Console.WriteLine(obj("CommandLine").ToString()) 
     End If 
Next 



Public Function GetProcessOwner(processId As Integer) As String 
    Dim query As String = "Select * From Win32_Process Where ProcessID = " & processId 
     Dim searcher As New ManagementObjectSearcher(query) 
    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 
     ' return DOMAIN\user 
      Return argList(1) & "\" & argList(0) 
     End If 
    Next 

    Return "NO OWNER" 
End Function 
+0

あなたはどうですか? – erez

+0

VB.netへの変換が追加されました –

関連する問題