首頁 > 後端開發 > C++ > 如何在 C# 中可靠地獲取進程的檔案路徑並避免 Win32Exceptions?

如何在 C# 中可靠地獲取進程的檔案路徑並避免 Win32Exceptions?

Susan Sarandon
發布: 2025-01-03 12:31:40
原創
684 人瀏覽過

How to Reliably Get a Process's File Path in C# and Avoid Win32Exceptions?

在C# 中存取Process.MainModule.FileName 時避免Win32 異常

在C# 中,嘗試擷取行程MainModule 的Name 屬性有時可能的Name 屬性會觸發Win32Exception,特別是在使用64 位元平台時。為了解決這個問題,Jeff Mercado 的解決方案提供了一個可靠的方法。

改編的程式碼:

為了簡化流程,這裡對 Mercado的程式碼進行了改編,用於取得檔案路徑某具體的process:

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;
}
登入後複製

此方法在Windows Management Instrumentation (WMI Management Instrumentation ) 中查詢具有指定進程ID 的進程的ExecutablePath 屬性。如果找到匹配的進程,則返回其檔案路徑。否則,傳回 null。

以上是如何在 C# 中可靠地獲取進程的檔案路徑並避免 Win32Exceptions?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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