C#获取运行应用程序的列表及其用于字符串扫描的路径
我正在用C#开发一个非常简单的第三方反作弊应用程序。我已经成功地创建了一个代码,可以扫描任何.exe文件,查找诸如“aimbot”和“hack”之类的禁用字符串。但我这样做的方式是,你浏览一个要扫描的文件,然后点击一个按钮来扫描它——这非常有效。我现在想要的是,我的工具将检查正在运行的用户进程,并自动扫描它们。这是否可行 如果你已经知道你想要的进程名称,你可以使用这个C#获取运行应用程序的列表及其用于字符串扫描的路径,c#,string,process,C#,String,Process,我正在用C#开发一个非常简单的第三方反作弊应用程序。我已经成功地创建了一个代码,可以扫描任何.exe文件,查找诸如“aimbot”和“hack”之类的禁用字符串。但我这样做的方式是,你浏览一个要扫描的文件,然后点击一个按钮来扫描它——这非常有效。我现在想要的是,我的工具将检查正在运行的用户进程,并自动扫描它们。这是否可行 如果你已经知道你想要的进程名称,你可以使用这个 Process[] processMame = Process.GetProcessesByName("you
Process[] processMame = Process.GetProcessesByName("yourProcess");
if (processMame.Length > 0)
{
/// You got your process here
/// Do whatever you want
}
Process[] processlist = Process.GetProcesses();
foreach (Process process in processlist)
{
Console.WriteLine($"Process: {process.ProcessName} ID: {process.Id} Path: {process.MainModule.FileName}");
}
您可能需要确保应用程序在管理员模式下运行才能执行此操作。如果需要可执行路径,可以在process.MainModule.FileName
更新:
我尝试打开一个正在运行的可执行文件,我正确地认识到,即使Im管理员正在使用该文件,我最终也会遇到访问冲突
我的建议是,如果你想检查一个现有的进程,杀死/处置它,打开它,然后做任何你应该做的事情,如果你觉得这不是无害的,你就把它还原回来
您可能需要通过定义的清单确保您的应用程序具有管理员权限
对于当前会话中的进程,请执行以下操作:
如果要使进程处于当前活动会话(当前登录的活动用户)中,您可能需要执行以下操作:
Process[] runningProcesses = Process.GetProcesses();
var sessionId = Process.GetCurrentProcess().SessionId;
var currentSessionProcesses = runningProcesses.Where(c => c.SessionId == sessionId).ToList();
foreach (var process in currentSessionProcesses)
{
Console.WriteLine($"Process: {process.ProcessName} ID: {process.Id} Path: {process.MainModule.FileName}");
}
在提出问题之前,你应该做些调查。我不知道进程名,因为它可能是任何作弊应用程序,这就是为什么我需要扫描用户运行的所有应用程序的原因。你实际上是如何“扫描”它的。你确实会马上得到所有的进程列表,并尝试将自己附加到进程中,但我不确定这是否会非常有效。这很简单,就像在简单的记事本中打开.exe并搜索禁止的短语一样。正如我提到的,我有这个结构,我的应用程序从textbox读取到.exe的路径,但我需要手动写入该路径。我需要的是一些东西(不确定我这里的逻辑是否正确),可以读取正在运行的应用程序路径,保存到文件,这样我的脚本就可以“检查”它们是否有禁止的字符串。我更新了答案。您可以从
process.MainModule.FileName
中找到可执行路径名。我不确定将其作为文本文件打开会导致任何访问冲突。马上回来谢谢你,我想我已经到了,我还有两个问题:第一,打开我的应用程序时产生的代码和错误“32位进程无法访问64位进程的模块”;第二,是否可以过滤结果,只显示用户运行的应用程序,而不是所有进程。