powershell 如何更改Windows的默认控制台主机应用程序?

mbskvtky  于 2023-03-23  发布在  Shell
关注(0)|答案(1)|浏览(238)

我已经使用窗口设置中的开发人员部分将默认控制台主机应用程序设置为Windows终端。但是,有时我想在其他主机(如cmd.exe或PowerShell)中运行我的控制台应用程序(目前使用c#和dotnet 7)。如何在代码中选择Windows上托管我的控制台应用程序的位置?是否有方法为不同的应用程序设置不同的主机?
我正在使用Windows 10版本21H2和Visual Studio 2022。
谢谢你的帮助。

juzqafwq

juzqafwq1#

我不知道每个应用程序的配置机制,但您可以通过所需的终端应用程序调用程序,conhost.exe(对于旧式控制台窗口,通过控制台主机)或wt.exe(Windows终端)。
下面是一个使用cmd.exe示例命令的PowerShell示例(应该很容易适应C#):

using namespace System.Diagnostics

# Launch via conhost.exe (console host)
[Process]::Start(
    [ProcessStartInfo] @{
        FileName = "conhost.exe"
        Arguments = "cmd.exe /k `"echo Hi there.`""
    }
)

# Launch via wt.exe (Windows Terminal)
[Process]::Start(
    [ProcessStartInfo] @{
        FileName = "wt.exe"
        Arguments = "cmd.exe /k `"echo Hi there.`""
    }
)

注意我们尝试通过.RedirectStandardOut.RedirectStandardError使用上述技术以编程方式捕获启动程序的输出:

  • 在Windows终端中,这基本上是不受支持的。
  • 使用conhost.exe,您在技术上可以**,但您将获得带有VT转义序列的前导码(表示为可扩展的PowerShell(核心)字符串):
  • "e[?25le[2Je[me[He]0;C:\Windows\SYSTEM32\conhost.exeae[?25h"`

相关问题