ホームページ >バックエンド開発 >C++ >プロセスの実行可能パスを取得するときに Win32Exception を回避するにはどうすればよいですか?

プロセスの実行可能パスを取得するときに Win32Exception を回避するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-28 01:09:10920ブラウズ

How to Avoid Win32Exception When Getting a Process's Executable Path?

Process.MainModule.FileName にアクセスするときの Win32Exception の回避策

Process.MainModule.FileName を通じて実行中のプロセスのファイル パスを取得しようとしたとき、一部のプロセスは、機能不全により Win32Exception をスローする場合があります。プロセスモジュールをリストします。この問題に対処するために、Jeff Mercado は代替方法を提供しました。

適応された C# コード:

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) は、プロセス モジュールへのアクセスを試行せずに、特定のプロセスをクエリし、その実行可能パスを取得します。これにより、Process.MainModule.FileName プロパティに直接アクセスしたときに発生するエラーが回避されます。

以上がプロセスの実行可能パスを取得するときに Win32Exception を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。