C# c将线程名称cmd.exe更改为xxx.exe

C# c将线程名称cmd.exe更改为xxx.exe,c#,windows,batch-file,cmd,C#,Windows,Batch File,Cmd,我想制作一个c应用程序,创建一个在循环中关闭所有cmd和Taskmanager的批处理。它与taskmgr.exe完美配合,但如果我添加它应该关闭所有cmd,它也会自动关闭。有没有办法更改线程本身的名称,从而不再调用cmd.exe 我的代码: File.Delete(path); using (var tw = new StreamWriter(path, true)) { tw.WriteL

我想制作一个c应用程序,创建一个在循环中关闭所有cmd和Taskmanager的批处理。它与taskmgr.exe完美配合,但如果我添加它应该关闭所有cmd,它也会自动关闭。有没有办法更改线程本身的名称,从而不再调用cmd.exe

我的代码:

            File.Delete(path);
            using (var tw = new StreamWriter(path, true))
            {
                tw.WriteLine(":ttt");
                tw.WriteLine("taskkill /f /Im taskmgr.exe");
                tw.WriteLine("goto ttt:");
                tw.WriteLine("pause");
                tw.Close();
                File.SetAttributes(path, FileAttributes.Hidden);
            }
            Process.Start(path);

我认为这里有一些误解,没有线程名cmd.exe,只是当你运行应用程序时,它创建了一个批处理文件,然后是进程.Startpath;运行新的cmd应用程序以在其中运行新创建的批处理脚本,因为根据定义,.bat脚本是cmd程序

我更愿意使用以下方法直接从您的程序中杀死任务管理器和CMD:

while(true){
    foreach (Process proc in Process.GetProcessesByName("cmd"))
    {
        proc.Kill();
    }
    foreach (Process proc in Process.GetProcessesByName("taskmgr"))
    {
        proc.Kill();
    }
    // Sleep for 2 seconds, so that the program does not do this too often.
    Thread.Sleep(2000);
}

复制C:\WINDOWS\system32\cmd.exe并运行该副本?我想用C制作它,如何制作?编辑:它应该可以在其他电脑上正常工作,我会有不同的想法。识别正在运行的线程,并通过检查关闭所有cmd.exe线程,以确保它不是您的。op使用的是控制台应用程序,而不是windows窗体和控制台应用程序是cmd.exe。它自己可以使用此答案并跳过父pid。如果系统访问功能正常,那么生成Cmd脚本真的不是很优雅exists@Joe_DM我不这么认为。我认为被杀死的是进程运行的蝙蝠。Startpath;。他的程序的可执行文件当然不是cmd.exe,也没有迹象表明op正在cmd中运行他的程序,他也可以直接从visual中运行,使用powershell,甚至双击它,这不应该特别运行新的cmd。@Thundzz我想你是对的,我误解了op的问题。控制台应用程序不会被称为cmd.exe,除非它是从一个cmd控制台开始执行的,无论哪种方式,我认为op已经足够从这里开始解决这个问题了。但是我如何才能为它创建一个循环:P我在编码方面非常糟糕,如果我做一个while循环,它会冻结应用程序