Windows Terminal 可以替换 Windows 内置的 Console Host,但是替换后如果以管理员身份运行命令行程序,仍然会使用内置 Console Host,无法使用 Windows Terminal。
经过一番调查,发现原因是这样的:Windows 替换默认终端,是由系统内置的 Console Host 通过 COM 去启动替换后的目标终端,并使用 COM 接口传递数据。
Microsoft Store 中的 Windows Terminal 使用 MSIX 打包,COM 注册信息是写在 AppXManifest.xml 中的,在安装 MSIX 包时系统会自动注册,并不是手动写入注册表。
但是当进程是管理员身份运行时,COM 相关服务会忽略由 MSIX 注册的信息,于是就无法启动 Windows Terminal 了。
https://github.com/microsoft/terminal/issues/10276#issuecomment-852215012
目前可能唯一可行的解决办法是,不要使用 MSIX 版本的 Windows Terminal,使用未打包版本的 Windows Terminal (可以在 release 页面下载到),然后手动添加注册表。
经过一番调查,发现原因是这样的:Windows 替换默认终端,是由系统内置的 Console Host 通过 COM 去启动替换后的目标终端,并使用 COM 接口传递数据。
Microsoft Store 中的 Windows Terminal 使用 MSIX 打包,COM 注册信息是写在 AppXManifest.xml 中的,在安装 MSIX 包时系统会自动注册,并不是手动写入注册表。
但是当进程是管理员身份运行时,COM 相关服务会忽略由 MSIX 注册的信息,于是就无法启动 Windows Terminal 了。
https://github.com/microsoft/terminal/issues/10276#issuecomment-852215012
目前可能唯一可行的解决办法是,不要使用 MSIX 版本的 Windows Terminal,使用未打包版本的 Windows Terminal (可以在 release 页面下载到),然后手动添加注册表。