【发布时间】:2019-06-29 06:17:02
【问题描述】:
大约一个月前,我为自己编写了一个 python 脚本来自动记录正在运行的程序及其相关信息,然后我使用了一个 C# 程序来获取这些信息。
我今天下载了一个游戏,当我运行它时,我得到了一个System.ComponentModel.Win32Exception 错误对话框。
我打开 Visual Studio 来调试我得到错误的地方。当我尝试访问 Process.MainModule 时出现错误。
当我在编写该程序时遇到错误时,我在互联网上搜索答案,我将 C# 程序设为 64 位以访问 64 位进程并请求管理员权限以访问以管理员身份运行的进程。我能找到的关于 MainModule 错误的所有问题都与这两个问题有关。
游戏正在使用 Easy Anti Cheat,我猜这可能会阻止我访问该进程。
我还使用WMI 尝试至少获取文件路径,以便我可以从FileVersionInfo.GetVersionInfo 函数中获取一些信息,但 wmi 也没有返回文件路径或命令行。
我在 python 中使用psutil 来获取命令行,因为如果不使用 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 任务管理器也没有显示命令行(但是当我右键单击游戏并选择打开文件路径时它会打开文件夹)。
【问题讨论】:
标签: c# process anti-cheat