Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#获取运行应用程序的列表及其用于字符串扫描的路径_C#_String_Process - Fatal编程技术网

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

C#获取运行应用程序的列表及其用于字符串扫描的路径,c#,string,process,C#,String,Process,我正在用C#开发一个非常简单的第三方反作弊应用程序。我已经成功地创建了一个代码,可以扫描任何.exe文件,查找诸如“aimbot”和“hack”之类的禁用字符串。但我这样做的方式是,你浏览一个要扫描的文件,然后点击一个按钮来扫描它——这非常有效。我现在想要的是,我的工具将检查正在运行的用户进程,并自动扫描它们。这是否可行 如果你已经知道你想要的进程名称,你可以使用这个 Process[] processMame = Process.GetProcessesByName("you

我正在用C#开发一个非常简单的第三方反作弊应用程序。我已经成功地创建了一个代码,可以扫描任何.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

更新: 我尝试打开一个正在运行的可执行文件,我正确地认识到,即使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位进程的模块”;第二,是否可以过滤结果,只显示用户运行的应用程序,而不是所有进程。