public int?GetWorkerProcessId() { using (var serverManager = new Microsoft.Web.Administration.ServerManager()) { // find the worker process. foreach (WorkerProcess proc in serverManager.WorkerProcesses) { if (proc.AppPoolName.ToLowerInvariant() == AppPoolName.ToLowerInvariant()) { return(proc.ProcessId); } } return(null); } }
static void BuildRunningAppPoolProcessesList() { var proc = new Process { StartInfo = new ProcessStartInfo { FileName = @"c:\windows\system32\inetsrv\appcmd.exe", Arguments = "list wp", UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true } }; try { proc.Start(); } catch (Exception exc) { Console.ForegroundColor = errorColor; Console.WriteLine("\nAn exception has occured while getting the application pool list."); Console.WriteLine(exc.Message); Console.WriteLine("\nPlease make sure that you are running in elevated command prompt and if the IIS is running."); Console.ForegroundColor = defaultForegroundColor; } int numberOfAppPoolsRunning = 0; string[] appPoolDetails; int AppPoolProcId; string AppPoolName; string AppPoolProcessorArchitecture = null; AppPoolProcessList = new Dictionary <int, string>(); while (!proc.StandardOutput.EndOfStream) { string line = proc.StandardOutput.ReadLine(); if (!string.IsNullOrEmpty(line)) { if (!line.StartsWith("ERROR")) { appPoolDetails = line.Split(new char[] { ' ' }, 3); AppPoolProcId = Convert.ToInt32(appPoolDetails[1].Replace("\"", "")); AppPoolName = appPoolDetails[2].Replace("(applicationPool:", ""); AppPoolName = AppPoolName.Substring(0, AppPoolName.Length - 1); Process wp = Process.GetProcessById(AppPoolProcId); AppPoolProcessorArchitecture = wp.StartInfo.EnvironmentVariables["PROCESSOR_ARCHITECTURE"]; // ApplicationPoolDetails appPool = new ApplicationPoolDetails(); appPool.processId = AppPoolProcId; appPool.appPoolName = AppPoolName; appPool.processorArchitecture = AppPoolProcessorArchitecture; AppPoolProcessList.Add(AppPoolProcId, AppPoolName); numberOfAppPoolsRunning++; } else { Console.WriteLine("WAS is not running or you are not running in an elevated command prompt."); Environment.Exit(-1); } } } }