C#获取正在运行的应用程序列表及其路径以进行字符串扫描

标签 c# string process

我正在用 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/

相关文章:

azure - 什么会导致节点 process.version 返回未定义?

c# - 使用 HttpClient 通过 GET 连接到 WebApi 时出现 404 错误

c# - 从一组 JPEG 生成 PDF

java - 尝试使用正则表达式匹配大字符串时出现 StackOverflow 错误

javascript - Google Apps 脚本 replaceText() 不适用于撇号 "'“

c# - 如何处理文件名

linux - 如何知道当前进程数以及哪个进程派生了最多进程?

c# - 返回 linq 查询的结果,但修改了一个值

C# MongoDB 索引导致奇怪的重复异常

java - 如何使用字符串列表的部分数字内容对字符串列表进行排序?