실행 중인 프로세스 열거와 관련된 C# 프로젝트에서 특정 프로세스에 대해 Process.MainModule의 FileName 속성에 액세스 프로세스는 "프로세스 모듈을 나열하는 동안 오류가 발생했습니다."라는 메시지와 함께 Win32Exception 오류를 트리거할 수 있습니다. 이 문제는 컴파일 대상(x86, AnyCPU)에 관계없이 지속됩니다.
Process p = Process.GetProcessById(2011); string s = proc_by_id.MainModule.FileName;
Jeff Mercado가 제안한 대로 Windows Management Instrumentation( WMI)는 이 오류를 피할 수 있습니다. 특히 Win32_Process 클래스의 ExecutablePath 속성을 사용하여 기본 모듈 파일 경로를 검색할 수 있습니다.
string s = GetMainModuleFilepath(2011);
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; }
위 내용은 Process.MainModule.FileName에 액세스하면 Win32Exception이 발생하는 이유는 무엇이며 WMI는 어떻게 솔루션을 제공할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!