在没有 Win32 异常的情况下访问 Process.MainModule.FileName
使用 Process.GetProcessById 方法检索正在运行的进程的路径时,您可以遇到阻止您访问 MainModule.FileName 属性的 Win32Exception。当尝试从某些进程检索模块信息时,会出现此异常。
解决方案:
要避免此问题,您可以采用 Jeff Mercado 概述的方法。以下代码演示了如何获取特定进程的完整文件路径:
string s = GetMainModuleFilepath(2011);
这是 GetMainModuleFilepath 方法的实现:
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) ,可以查询进程信息并提取可执行路径,而不会触发Win32Exception。
以上是如何在没有 Win32Exception 的情况下访问 Process.MainModule.FileName?的详细内容。更多信息请关注PHP中文网其他相关文章!