2008-09-04 10 views
2

우리는 앱의 다른 인스턴스가 어떻게 시작되었는지 결정하려고하는 흥미로운 사례가 있습니다. .NET에서 다른 실행중인 인스턴스를 쿼리하고 해당 인스턴스에 전달 된 명령 줄 매개 변수를 가져올 수있는 방법이 있습니까? 지금까지 .NET에서 그렇게 할 수있는 방법을 찾을 수 없었기 때문에 이전에 이런 식으로 일한 사람이 있는지 여기에서 확인하려고했습니다..NET에서 실행중인 다른 프로그램의 명령 줄 매개 변수를 확인할 수 있습니까?

답변

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) 
     {} 
    } 
}