.NET에서 실행 중인 다른 프로그램 명령줄 매개변수를 확인할 수 있습니까?
-
09-06-2019 - |
문제
우리 앱의 다양한 인스턴스가 어떻게 실행되었는지 확인하려는 흥미로운 사례가 있습니다..NET에서 실행 중인 다른 인스턴스를 쿼리하고 해당 인스턴스에 전달된 명령줄 매개 변수를 가져올 수 있는 방법이 있습니까?지금까지 .NET에서 이를 수행할 수 있는 방법을 찾을 수 없었기 때문에 이전에 누군가가 이와 같은 작업을 수행했는지 확인하기 위해 여기에서 확인해야 한다고 생각했습니다.
해결책
이 정보는 WMI를 통해 검색할 수 있습니다.
참조 Win32_Process 클래스, 특히 명령줄 속성입니다.이것 코드 프로젝트 기사 이를 수행하는 방법에 대한 지침을 제공합니다.
다른 팁
일반적으로 이러한 변수는 (이론적으로) 접근할 수 없는 프로그램의 메모리 공간에 저장됩니다.
다른 인스턴스 및 거래 데이터와의 프로세스 간 통신을 시작하는 방법을 찾아야 합니다.명명된 파이프는 좋은 옵션 중 하나이지만 이에 대한 좋은 옵션을 얻으려면 새로운 스택오버플로 질문을 시작하는 것이 좋습니다.
-아담
나중에 참조할 수 있도록 작동 방법에 대한 코드 조각이 있습니다.이것은 단지 그것이 어떻게 작동하는지 알아보기 위한 테스트였습니다.실제 구현된 코드는 필요한 명령줄 매개변수를 구문 분석합니다.
try
{
ManagementScope connectScope = new ManagementScope();
connectScope.Path = new ManagementPath(@"\\" + Environment.MachineName + @"\root\CIMV2");
SelectQuery msQuery = new SelectQuery("SELECT * FROM Win32_Process Where Name = '" + "PROGRAMNAMEHERE.exe" + "'");
ManagementObjectSearcher searchProcedure = new ManagementObjectSearcher(connectScope, msQuery);
foreach (ManagementObject item in searchProcedure.Get())
{
try
{
MessageBox.Show(item["CommandLine"].ToString());
}
catch (SystemException)
{}
}
}
제휴하지 않습니다 StackOverflow