首頁 > 後端開發 > C++ > 如何在沒有 Win32Exception 的情況下存取 Process.MainModule.FileName?

如何在沒有 Win32Exception 的情況下存取 Process.MainModule.FileName?

Barbara Streisand
發布: 2024-12-31 21:14:15
原創
586 人瀏覽過

How to Access Process.MainModule.FileName Without a Win32Exception?

在沒有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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板