大约一个月前,我为自己编写了一个 python 脚本来自动记录正在运行的程序及其相关信息,并使用 C# 程序来获取这些信息。
我今天下载了一个游戏,当我运行它时,我得到一个System.ComponentModel.Win32Exception
错误对话框。
我打开 Visual Studio 来调试我得到错误的地方。当我尝试访问时出现错误Process.MainModule
。
当我在编写该程序时遇到错误时,我在 Internet 上搜索答案并将 C# 程序设为 64 位以访问 64 位进程并请求管理员权限以访问以管理员身份运行的进程。我能找到的关于 MainModule 错误的所有问题都与这两个问题有关。
该游戏使用的是 Easy Anti Cheat,我想这可能会阻止我访问该过程。
我也曾经WMI
尝试至少获取文件路径,以便我可以从FileVersionInfo.GetVersionInfo
函数中获取一些信息,但 wmi 也没有返回文件路径或命令行。
我psutil
在 python 中使用来获取命令行,因为如果不使用 WMI,我无法从 C# 中获取它,所以我尝试从那里获取一些信息,但是在我尝试做的任何事情上都会出错,我什至无法得到文件名,而我可以从 C# 中得到它。
C#代码的相关部分是
int pid; //I get this from command line arguments
Process p;
p = Process.GetProcessById(pid);
var filename = p.MainModule.FileName ?? "";
有没有办法至少可以获取 exe 路径,这样我就可以使用 FileVersionInfo 而不会触发反作弊程序并可能被禁止?即使是 Windows 10 任务管理器也没有显示命令行(但是当我右键单击游戏并选择打开文件路径时它会打开文件夹)。