You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C#中检测终端类型:区分现代Terminal应用与传统命令提示符

检测当前运行的终端类型(Windows Terminal vs 传统Command Prompt)

方法1:检查专属环境变量

Windows Terminal会自动设置WT_SESSION环境变量,传统Command Prompt无此变量,可通过读取该变量快速判断:

  • Command Prompt 脚本示例:
if defined WT_SESSION (
    echo 运行在Windows Terminal中
) else (
    echo 运行在传统Command Prompt中
)
  • PowerShell 脚本示例:
if ($env:WT_SESSION) {
    Write-Host "运行在Windows Terminal中"
} else {
    Write-Host "运行在传统Command Prompt中"
}

方法2:检查父进程名称

Windows Terminal的终端实例父进程是WindowsTerminal.exe,传统Command Prompt的父进程通常是explorer.exe或其他启动程序,可通过获取父进程信息判断:

$parentProcId = (Get-Process -Id $PID).Parent.Id
$parentProc = Get-CimInstance Win32_Process -Filter "ProcessId = $parentProcId"

if ($parentProc.Name -eq "WindowsTerminal.exe") {
    Write-Host "运行在Windows Terminal中"
} else {
    Write-Host "运行在传统Command Prompt中"
}

方法3:检测终端特性支持

如果需要判断终端是否支持特定功能(而非单纯区分类型),可尝试发送Windows Terminal支持但传统Command Prompt不支持的ANSI转义序列,比如真彩色输出,通过观察响应判断:

# 测试真彩色输出(Windows Terminal会显示正确红色,传统CMD可能无变化或显示乱码)
Write-Host "$([char]27)[38;2;255;0;0m测试真彩色$([char]27)[0m"

内容的提问来源于stack exchange,提问作者PhonicUK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 23:07:02