우리는 앱의 다른 인스턴스가 어떻게 시작되었는지 결정하려고하는 흥미로운 사례가 있습니다. .NET에서 다른 실행중인 인스턴스를 쿼리하고 해당 인스턴스에 전달 된 명령 줄 매개 변수를 가져올 수있는 방법이 있습니까? 지금까지 .NET에서 그렇게 할 수있는 방법을 찾을 수 없었기 때문에 이전에 이런 식으로 일한 사람이 있는지 여기에서 확인하려고했습니다..NET에서 실행중인 다른 프로그램의 명령 줄 매개 변수를 확인할 수 있습니까?
2
A
답변
4
이 정보는 WMI를 통해 검색 할 수 있습니다.
Win32_Process 클래스, 특히 해당 명령 줄 속성을 참조하십시오. 이 Code Project article은이를 수행하는 방법에 대한 지침을 제공합니다.
2
일반적으로 이러한 변수는 (이론적으로) 액세스 할 수 없어야하는 프로그램의 메모리 공간에 저장됩니다.
다른 인스턴스 및 거래 데이터와의 프로세스 간 통신을 시작하는 방법을 알아야합니다. 명명 된 파이프는 하나의 좋은 옵션이지만, 여기에 대한 좋은 옵션을 얻으려면 새로운 stackoverflow 질문을 시작하는 것이 좋습니다.
-adam
0
나중에 참조 할 수 있도록 다음 코드를 사용하십시오. 이것은 그것이 모두 어떻게 작동 하는지를보기위한 시험이었습니다. 실제 구현 된 코드는 필요한 명령 줄 매개 변수를 구문 분석합니다.
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)
{}
}
}