使用 Windows 10(当前为 1803),我有一些“控制台”应用程序只能在新控制台中运行1以及其他需要旧 NT 控制台的应用程序。
问题在于我找不到如何同时运行 2 个“性别”相反的控制台应用程序!在 Windows 注册表中,我在“HKCU\Console”下设置“ForceV2”=1,然后所有非 GUI 程序将(尝试)在新控制台中运行;现在,每当我必须运行与 V2 控制台不兼容的程序时,就会出现问题:我将从桌面快捷方式(例如)启动此类程序,在快捷方式的“选项”选项卡下选择“使用新控制台”。这最终会起作用,但它似乎还会重置上面提到的全局(每个用户)“ForceV2”注册表项。相反,不幸的是,当“ForceV2”等于零时,似乎所有控制台程序都将使用旧的 - V1 - 样式的控制台。
我可能并且希望遗漏了一些东西:是否可以选择单个控制台程序使用的控制台样式,无论是从快捷方式还是以其他方式启动(“运行”框,单击资源管理器中的可执行文件......)?
答案1
每次启动控制台应用程序时,Windows 10 只会查找一个地方来选择控制台的样式 - 旧的还是新的 - 即名为“ForceV2“在用户的注册表项下”HKCU\控制台“。令人困惑的是,可以从 Windows 控制台可执行文件或快捷方式的“属性”访问和更改此设置,但与其他 exe 和快捷方式“属性”相反,“ForceV2”值是不是存储在快捷方式文件中,也不存储在“HKCU\console”的程序特定子项(如果有)中!这些 UI 仅影响唯一的全局(每个用户)键。
似乎没有充分的理由让这个值得到这种特殊待遇——我猜它可能会在未来的版本中改变。事实上,好的一点是新旧风格的控制台能绝对可以并肩作战!正如马克西姆斯在评论中,在启动新的控制台进程之前,必须简单地将全局注册表项切换为所需的或要求的值。
使用命令行注册表编辑器 (reg.exe) - 这里比 Regedit 更受欢迎,因为 Regedit 的使用很讲究,需要多次确认“点击”,一个是
C:\WINDOWS\System32\reg.exe add HKCU\Console /v ForceV2 /t REG_DWORD /d 1 /f
启用新的 (V2) 控制台,反之:
C:\WINDOWS\System32\reg.exe add HKCU\Console /v ForceV2 /t REG_DWORD /d 0 /f
则恢复到旧的 (v1) 控制台。
这些命令可以作为简单的批处理(.cmd)单行命令输入,其快捷方式可以放在 Windows 桌面上,允许用户在启动程序之前快速切换控制台类型 - 而不会影响之前启动和运行的控制台应用程序(如果有)。