다음은 32 비트 및 64 비트 애플리케이션 모두에서 작동하는 신뢰할 수있는 솔루션입니다 .
다음 참조를 추가하십시오.
System.Diagnostics 사용;
System.Management 사용;
이 방법을 프로젝트에 추가하십시오.
public static string GetProcessPath(int processId)
{
string MethodResult = "";
try
{
string Query = "SELECT ExecutablePath FROM Win32_Process WHERE ProcessId = " + processId;
using (ManagementObjectSearcher mos = new ManagementObjectSearcher(Query))
{
using (ManagementObjectCollection moc = mos.Get())
{
string ExecutablePath = (from mo in moc.Cast<ManagementObject>() select mo["ExecutablePath"]).First().ToString();
MethodResult = ExecutablePath;
}
}
}
catch //(Exception ex)
{
//ex.HandleException();
}
return MethodResult;
}
이제 다음과 같이 사용하십시오.
int RootProcessId = Process.GetCurrentProcess().Id;
GetProcessPath(RootProcessId);
프로세스의 ID를 알고있는 경우이 메서드는 해당 ExecutePath를 반환합니다.
추가 사항 :
Process.GetProcesses()
... 현재 실행중인 모든 프로세스의 배열을 제공합니다.
Process.GetCurrentProcess()
... 현재 프로세스, 정보 (예 : Id 등) 및 제한된 제어 (예 : Kill 등)를 제공합니다. *