C# で Process.MainModule.FileName にアクセスするときの Win32 例外の回避
C# で、プロセスの MainModule の FileName プロパティを取得しようとしています特に 64 ビット プラットフォームで作業している場合、Win32Exception がトリガーされることがあります。この問題に対処するために、Jeff Mercado のソリューションは信頼性の高いアプローチを提供します。
適応コード:
プロセスを簡素化するために、ファイル パスを取得するために Mercado のコードを適応させたものを次に示します。特定のprocess:
string s = GetMainModuleFilepath(2011);
Implementation:
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; }
このメソッドは、指定されたプロセス ID を持つプロセスの ExecutablePath プロパティについて Windows Management Instrumentation (WMI) をクエリします。 。一致するプロセスが見つかった場合は、そのファイル パスが返されます。それ以外の場合は、null が返されます。
以上がC# でプロセスのファイル パスを確実に取得し、Win32Exceptions を回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。