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 サイトの他の関連記事を参照してください。