0

我的一个 Win10 桌面在 Visual c++ 编译器(vc142 工具链/msvs2019,Win10)方面存在非常奇怪的问题:每次任何 GUI 应用程序启动 c++ 编译器(cl.exe)时,它都会打开新的控制台窗口。

由于编译器正在由 IDE(例如 VisualStudio、CLion、QtCreator 等)使用,因此它非常没用,因为被调用者(IDE)无法捕获编译的输出,并且 IDE 不显示任何编译输出,尤其是编译消息万一出错。显然,这些 IDE 是通过 msbuild 或 cmake 等构建系统间接执行此操作的。无论如何,问题就在那里。

所以 NMake 或 MSBuild 不能正确使用,因为它们在单独的窗口中运行 cl.exe。我必须手动从命令行运行构建过程才能看到错误消息。

相同的工具链可以在其他 Win10 主机上正确使用。我看不出有什么区别...

知道为什么会发生以及如何解决吗?

PS 可能这不是 cl 的问题,而是一些 Windows 终端设置......甚至是安全问题(我不是该主机的管理员)

4

1 回答 1

0

对我们来说,这是一个企业间谍软件程序 BeyondTrust/PowerBroker for windows,它以某种方式使 cl.exe 行为异常。

PowerBroker 基本上接管了 UAC 控制并强制应用程序以特权模式或非特权模式等运行。我不确定机制,但它以某种方式干扰了 cl.exe 写入 stderr 或 ninja.exe 重定向 stderr 的能力对自己,或者忍者在某处或某处管道的能力。

无论如何,将白名单规则放入(或终止超出信任服务)使 VSCode 调用 cmake 调用 ninja 调用 cl.exe 行为正常。

编辑:更多详细信息:cmake.exeninja.execmd.exe是需要从 BeyondTrust 的 PRIVMAN 中豁免的进程,以便从 VSCode 函数进行 cmake 构建而不会弹出窗口。

于 2021-08-18T10:27:22.970 回答