C# 获取 运行 个应用程序列表及其字符串扫描路径

C# Get list od running Apps and their paths for string scan

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

上找到它

更新:

我尝试打开一个 运行 可执行文件,我是正确的,即使我是管理员,因为该文件现在正被其他进程使用,我最终也会遇到访问冲突。

我的建议是,如果你想检查一个现有的进程,kill/dispose它,打开它并做你应该做的任何事情,如果你觉得这不是无害的,你恢复它.

您可能需要通过定义的清单 here.

确保您的应用具有管理员权限

在当前会话中进行进程:

如果您希望在当前活动会话(当前登录的活动用户)中拥有这些进程,您可能需要执行以下操作:

    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}");
    }