访问 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管理规范 (WMI) 用于查询特定进程并检索其可执行路径,而无需尝试访问其进程模块。它避免了直接访问 Process.MainModule.FileName 属性时遇到的错误。
以上是获取进程的可执行路径时如何避免Win32Exception?的详细内容。更多信息请关注PHP中文网其他相关文章!