在沒有Win32 異常的情況下存取Process.MainModule.FileName
使用Process.GetProcessById 方法擷取正在執行的進程的路徑時,您可以遇到阻止您存取MainModule.FileName 屬性的Win32Exception。當嘗試從某些進程檢索模組資訊時,會出現此異常。
解決方案:
要避免此問題,您可以採用 Jeff Mercado 概述的方法。以下程式碼示範如何取得特定進程的完整檔案路徑:
string s = GetMainModuleFilepath(2011);
這是GetMainModuleFilepath 方法的實作:
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; }
透過利用Windows Management Instrumentation (WMI) ,可以查詢進程資訊並提取可執行路徑,而不會觸發Win32Exception。
以上是如何在沒有 Win32Exception 的情況下存取 Process.MainModule.FileName?的詳細內容。更多資訊請關注PHP中文網其他相關文章!