반응형
C#에서 외부 프로그램을 실행시 외부 프로그램의 프로세스 부모&자식 PID를 찾는 방법입니다.
프로그램 종료시 자식 프로세스가 종료되지 못하는 경우 PID찾아 kill하면 될것 같습니다.
샘플은 크롬 브라우져 실행해서 PID를 가져오는 방법입니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management;
using System.IO;
using System.Diagnostics;
using System.Threading;
using Microsoft.Win32;
namespace ConsoleProcess
{
/// <summary>
/// https://www.codegrepper.com/code-examples/csharp/c%23+kill+process+by+pid
/// </summary>
class Program
{
static void Main(string[] args)
{
string BrowserPath = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe", "", null);
string BrowserTempPath = Path.Combine(System.IO.Directory.GetCurrentDirectory(), "Temp");
Process proc = new Process();
proc.StartInfo.FileName = BrowserPath;
// --silent-launch
proc.StartInfo.Arguments = "https://www.google.com/ --new-window --remote-debugging-port=9222 --user-data-dir=" + BrowserTempPath;
proc.Start();
Console.WriteLine("parent PID: " + proc.Id);
Thread.Sleep(2000);
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Process Where ParentProcessID=" + proc.Id);
ManagementObjectCollection moc = searcher.Get();
foreach (ManagementObject mo in moc)
{
Console.WriteLine("child PID : " + mo["ProcessID"]);
}
proc.WaitForExit();
}
} // class(e)
} // namespace(e)
https://www.codegrepper.com/code-examples/csharp/c%23+kill+process+by+pid
'Windows' 카테고리의 다른 글
c# 특정시간 기준으로 간격으로 두고 두번 실행하는 방법 (0) | 2021.12.17 |
---|---|
PID를 알고 있을때 process kill 방법 (0) | 2021.12.16 |
ARP Scan Console (0) | 2021.04.03 |
Color Property (0) | 2021.04.03 |
C# 쓰레드를 위한 ConcurrentDictionary (0) | 2021.03.21 |