0

大约一个月前,我为自己编写了一个 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 任务管理器也没有显示命令行(但是当我右键单击游戏并选择打开文件路径时它会打开文件夹)。

4

1 回答 1

0

在 C++ 中找到了一个工作示例,并用它构建了一个可执行文件以获取进程的路径,并FileVersionInfo.GetVersionInfo使用返回的路径调用以获取我想要的信息。

于 2019-02-06T11:54:57.070 回答