前言:
互联网上充斥着这个问题的变体(就像 nVidia 的支持论坛一样),但只能找到解决方法 - 大多数人似乎实际上都有一个问题,他们希望一直使用一个图形处理器,但系统使用另一个图形处理器一直。当然,正确的解决方案是在 nVidia 控制面板中为程序创建一个配置文件,并将其设置为始终使用所需的图形处理器。
然而,我自己的用例确实是我想用一个图形处理器启动一个程序,然后是下一个,然后是第一个,等等。能够使用此上下文菜单对于不浪费大量时间非常重要
我能找到的唯一可行的解决方案是完全禁用 UAC。那么,不怎么样。
问题:
nVidia 控制面板提供了向右键单击可执行文件时打开的菜单添加上下文子菜单的选项。此子菜单包含计算机上每个已安装图形设备的条目,允许为程序的一次启动选择非标准设备。

在 Win7 中,这适用于所有程序、兼容性设置、“以管理员身份运行”等,所有这些都无关紧要(尽管我不记得我是否对旧的 Win7 设置进行了更改;可能 UAC 已关闭)。
在 Windows 10 Professional 中,使用 nVidia 控制面板 8.1.1000.0,在此上下文子菜单中选择任何选项(包括默认值)会在设置为在 WinXP SP3 兼容模式下运行的目标可执行文件上产生以下错误:

它确实适用于没有兼容模式设置的可执行文件。
据我所知,这里的问题是 WinXP 兼容模式意味着“以管理员身份运行”,而如果通过此上下文子菜单访问 nVidia 控制面板,则以普通用户身份运行。
不过我可能弄错了。
即使没有:如果以这种方式访问,我如何提升其权限?
我有点羞愧,我自己找不到一个好的解决方案,但可惜。
使用 npm,我们通常有一个带有段package.json的文件scripts,用于存储我们希望工具链定期执行的任务,例如:
"scripts": {
"build": "webpack --env production",
"start": "webpack-dev-server"
}
Run Code Online (Sandbox Code Playgroud)
现在我们可能已经更新了工具链的一部分 - 在这个示例中是 webpack - 突然我们收到一条如下消息:
(node:10868) [DEP_WEBPACK_DEPRECATION_ARRAY_TO_SET] DeprecationWarning: Compilation.modules was changed from Array to Set (using Array method 'reduce' is deprecated)
(Use `node --trace-deprecation ...` to show where the warning was created)
Run Code Online (Sandbox Code Playgroud)
按原样,它对于诊断和解决问题完全没有用。某些构建脚本中的某些地方是错误的。... 耶!
至少在 webpack 及其插件的情况下,我们可以获得在 CLI 上调用的非常有用的跟踪输出:
node --trace-deprecation node_modules/webpack/bin/webpack.js --env production
Run Code Online (Sandbox Code Playgroud)
相当麻烦的一行,不是吗?我们确实想避免这种情况的原因有很多。排名不分先后:
package.jsonCLI 复制到(例如,不同的环境激活不同的插件 - 这不是一般用例,因此很容易被忽视,即使程序员已经有了处理弃用的想法)
.js我们也不能复制整个脚本主体所以...