16,554
社区成员
发帖
与我相关
我的任务
分享
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim sProcesses() As System.Diagnostics.Process
Dim sProcess As System.Diagnostics.Process
Dim s As String
sProcesses = System.Diagnostics.Process.GetProcesses()
s = ""
' s = vbCrLf & "ProCSS Info " & vbCrLf
For Each sProcess In sProcesses
s = s & sProcess.Id & sProcess.ProcessName() & "|" '& & sProcess.MachineName & "|" & vbCrLf
Next
TextBox1.Text = s
End Sub
Public Class Form2
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, ByRef nSize As Integer) As Integer
Public Function GetUserName() As String
Dim iReturn As Integer
Dim userName As String
userName = New String(CChar(" "), 50)
iReturn = GetUserName(userName, 50)
GetUserName = userName.Substring(0, userName.IndexOf(Chr(0)))
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.TextBox1.Text = GetUserName()
End Sub
End Class
Public Shared Function GetProcessInfoByPID(PID As Integer, User As String, Domain As String) As String
User = [String].Empty
Domain = [String].Empty
OwnerSID = [String].Empty
Dim processname As String = [String].Empty
Try
Dim sq As New ObjectQuery("Select * from Win32_Process Where ProcessID = '" & PID & "'")
Dim searcher As New ManagementObjectSearcher(sq)
If searcher.[Get]().Count = 0 Then
Return OwnerSID
End If
For Each oReturn As ManagementObject In searcher.[Get]()
Dim o As String() = New [String](1) {}
'Invoke the method and populate the o var with the user name and domain
oReturn.InvokeMethod("GetOwner", DirectCast(o, Object()))
'int pid = (int)oReturn["ProcessID"];
processname = DirectCast(oReturn("Name"), String)
'dr[2] = oReturn["Description"];
User = o(0)
If User Is Nothing Then
User = [String].Empty
End If
Domain = o(1)
If Domain Is Nothing Then
Domain = [String].Empty
End If
Dim sid As String() = New [String](0) {}
oReturn.InvokeMethod("GetOwnerSid", DirectCast(sid, Object()))
OwnerSID = sid(0)
Return OwnerSID
Next
Catch
Return OwnerSID
End Try
Return OwnerSID
End Function
public static string GetProcessInfoByPID(int PID, out string User, out string Domain)
{
User = String.Empty;
Domain = String.Empty;
OwnerSID = String.Empty;
string processname = String.Empty;
try
{
ObjectQuery sq = new ObjectQuery
("Select * from Win32_Process Where ProcessID = '" + PID + "'");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(sq);
if (searcher.Get().Count == 0)
return OwnerSID;
foreach (ManagementObject oReturn in searcher.Get())
{
string[] o = new String[2];
//Invoke the method and populate the o var with the user name and domain
oReturn.InvokeMethod("GetOwner", (object[])o);
//int pid = (int)oReturn["ProcessID"];
processname = (string)oReturn["Name"];
//dr[2] = oReturn["Description"];
User = o[0];
if (User == null)
User = String.Empty;
Domain = o[1];
if (Domain == null)
Domain = String.Empty;
string[] sid = new String[1];
oReturn.InvokeMethod("GetOwnerSid", (object[])sid);
OwnerSID = sid[0];
return OwnerSID;
}
}
catch
{
return OwnerSID;
}
return OwnerSID;
}