C#에서 Process.MainModule.FileName 액세스: Win32 예외 방지
C#에서 Process.MainModule.FileName 속성에 액세스하려고 할 때, 개발자는 Win32Exception이 발생할 수 있습니다. 이 예외는 일반적으로 32비트(x86) 또는 AnyCPU 환경용 애플리케이션을 다시 컴파일하더라도 64비트 플랫폼에서 프로세스 모듈을 열거하는 동안 발생합니다.
문제의 코드는 종종 다음 형식을 취합니다.
Process p = Process.GetProcessById(2011); string s = proc_by_id.MainModule.FileName;
이 문제를 해결하기 위해 개발자는 참조 답변에 제안된 대로 Jeff Mercado가 제공한 코드를 활용할 수 있습니다. 이 코드는 특정 프로세스의 파일 경로를 검색하기 위해 약간 조정되었습니다.
string s = GetMainModuleFilepath(2011);
GetMainModuleFilepath 메서드는 WMI(Windows Management Instrumentation)를 활용하여 Win32_Process 클래스에서 ExecutablePath 속성을 쿼리합니다.
private string GetMainModuleFilepath(int processId) { string wmiQueryString = "SELECT ProcessId, ExecutablePath FROM Win32_Process WHERE ProcessId = " + processId; using (var searcher = new ManagementObjectSearcher(wmiQueryString)) { using (var results = searcher.Get()) { ManagementObject mo = results.Cast<ManagementObject>().FirstOrDefault(); if (mo != null) { return (string)mo["ExecutablePath"]; } } } return null; }
이 접근 방식을 활용하면 개발자는 Win32Exception을 우회하고 MainModule.FileName을 성공적으로 검색할 수 있습니다. 지정된 프로세스.
위 내용은 C#에서 Process.MainModule.FileName에 액세스할 때 Win32Exception을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!