Hi,
See this sample. I use to pass Apps Name rather than ProcessID for query.
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Management;
using System.Text;
public partial class ProcessId : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
string PID = "Outlook.exe";
string User = string.Empty;
string Domain = string.Empty;
var processId = GetProcessInfoByPID(PID, User, Domain);
}
private object GetProcessInfoByPID(string PID, string User, string Domain)
{
string OwnerSID = string.Empty;
ConnectionOptions connection = new ConnectionOptions();
ConnectionOptions options = new ConnectionOptions();
string targetIpAddress = "210.0.0.000";
connection.Authentication = System.Management.AuthenticationLevel.Packet;
ManagementScope scope = new ManagementScope(("\\\\" + targetIpAddress), options);
scope.Connect();
ManagementPath p = new ManagementPath("Win32_Product");
ManagementClass classInstance = new ManagementClass(scope, p, null);
ObjectQuery query = new ObjectQuery("Select * from Win32_Process Where Name = '" + PID + "'");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
foreach (ManagementObject oReturn in searcher.Get())
{
string[] o = new String[2];
oReturn.InvokeMethod("GetOwner", (object[])o);
var pid = oReturn["ProcessID"];
var processname = (string)oReturn["Name"];
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;
}
return OwnerSID;
}
}
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Regards,
Algem