我正在用 C# 开发一个非常简单的第 3 方反作弊应用程序。我已经设法创建了一个代码,可以扫描任何 .exe 以查找禁止的字符串,例如“aimbot”和“hack”。但我的做法是,您浏览一个要扫描的文件并单击一个按钮进行扫描 - 这非常有效。我现在想要的是我的工具将检查正在运行的用户进程并自动扫描它们。那甚至可行吗?
最佳答案
如果您已经知道要查找的进程名称,则可以使用它。
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
更新:
我尝试打开一个正在运行的可执行文件,我是正确的,即使我是管理员,因为该文件现在正被其他进程使用,我最终也会遇到访问冲突。
我的建议是,如果您想检查一个现有的进程,杀死/处置它,打开它并做任何您应该做的事情,如果您觉得这不是无害的,就将其还原。
您可能需要通过定义的 list here 确保您的应用具有管理员权限.
对于当前 session 中的进程:
如果你想在当前事件 session (当前登录的事件用户)中拥有进程,你可能想要这样的东西:
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}");
}
关于C#获取正在运行的应用程序列表及其路径以进行字符串扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39851420/