Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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# 如何将控制台应用程序文本写入txt_C#_Console_Console Application_Dump_Streamwriter - Fatal编程技术网

C# 如何将控制台应用程序文本写入txt

C# 如何将控制台应用程序文本写入txt,c#,console,console-application,dump,streamwriter,C#,Console,Console Application,Dump,Streamwriter,我正在制作一个工具,使用procdump转储进程,然后使用stringsv2.53将转储转换为实际字符串,在转换转储后,我尝试将控制台应用程序中显示的所有字符串写入.txt 我不知道我做错了什么,我尝试了我看到的每一个论坛帖子,关于如何做到这一点,我就是做不到 这是我的密码 string path2 = @"C:\Void\Dump\Dump.txt"; Process p = new Process(); ProcessStartInfo i

我正在制作一个工具,使用procdump转储进程,然后使用stringsv2.53将转储转换为实际字符串,在转换转储后,我尝试将控制台应用程序中显示的所有字符串写入.txt

我不知道我做错了什么,我尝试了我看到的每一个论坛帖子,关于如何做到这一点,我就是做不到

这是我的密码

        string path2 = @"C:\Void\Dump\Dump.txt";


        Process p = new Process();
        ProcessStartInfo info = new ProcessStartInfo();
        info.FileName = "cmd.exe";
        info.RedirectStandardInput = true;
        info.UseShellExecute = false;

        p.StartInfo = info;
        p.Start();
        StreamWriter sw = p.StandardInput;
        using (sw)
        {
            if (sw.BaseStream.CanWrite)
            {
                sw.WriteLine(@"cd C:\Void\Dump");
                sw.WriteLine(@"strings -s");

                System.IO.StreamWriter stream = new System.IO.StreamWriter(path2);

                sw.AutoFlush = true;

                Console.SetOut(stream);

            }
        }

我将构建它,以便在写入控制台输出时写入文本文件

File.WriteAllText(fileDirectoryPath, textData);//is the simplest way you can write to a file
在发送到WriteAllText的textData参数之前,还需要使用streamreader将流转换为文本。见下例:

StreamReader reader = new StreamReader(stream);
string text = reader.ReadToEnd();
File.WriteAllText("pathwayToDirectory", text);
这是集成到您的解决方案中的代码。注意:我假设您正在将此文本数据放入转储文件:

   string path2 = @"C:\Void\Dump\Dump.txt";


    Process p = new Process();
    ProcessStartInfo info = new ProcessStartInfo();
    info.FileName = "cmd.exe";
    info.RedirectStandardInput = true;
    info.UseShellExecute = false;

    p.StartInfo = info;
    p.Start();
    StreamWriter sw = p.StandardInput;
    using (sw)
    {
        if (sw.BaseStream.CanWrite)
        {
            sw.WriteLine(@"cd C:\Void\Dump");
            sw.WriteLine(@"strings -s");

            System.IO.StreamWriter stream = new System.IO.StreamWriter(path2);

              StreamReader reader = new StreamReader(path2);//Fixed this to have the right value
            string text = reader.ReadToEnd();//convert stream to text
            File.WriteAllText(path2, text);

            Console.SetOut(stream);
            sw.AutoFlush = true;

        }
    }

我只需要知道如何将控制台应用程序正在写入的文本转换为txt。你的最终目标是什么?您想对txt文件做什么?如果您想在程序中再次读回该txt,也可以直接启动strings.exe作为进程,而不需要通过cmd.exe绕道。如果这样做,您可以重定向此进程的StandardOutput,并在C#程序中以编程方式完全读取strings.exe的输出,而不需要临时txt文件…我制作了一个工具,可以自动创建javaw进程的转储,使用strings.exe将转储转换为可读字符串,然后使用consoleapp字符串搜索新的txt以查找与作弊相关的字符串。因为我工作的人不希望网络上有骗子,所以他们希望我制作一个工具来防止这种情况。我已经有了转储文件的制作和转换过程。我只需要知道如何将所有显示的ConsoleApp文本转换为txt,然后进行搜索。因此,本质上,您希望在程序中搜索strings.exe的输出,还是我误解了您的意思?是,你完全正确。在类似的例子中有一个错误,你试图声明“reader”,但是为了更详细地了解我要做的事情。控制台应用程序将转储转换为字符串后,这些字符串在控制台应用程序中可见。因此,我试图创建一个全新的txt,其中包含控制台应用程序中的所有文本。