为什么相同的命令与 CMD 和 Process.Start() 的工作方式不同?

Why does the same command work differently from CMD vs Process.Start()?

在CMD或Win+R中使用以下命令打开屏保对话框:

control desk.cpl,screensaver,@screensaver

下面做类似的事情,但是大多数屏幕保护程序从下拉列表中丢失(只有 (None)空白,并且 照片 可用):

Process.Start("control.exe", "desk.cpl,screensaver,@screensaver");

为什么?

(显然,我如何使用 C#/.Net 获取 CMD 结果?)

区别在于启动应用程序的位数。 64 位资源管理器启动 64 位控制面板获取完整列表。

作为 32 位的应用程序 运行 启动 32 位控制面板并获取截断列表。与 64 位相同的应用程序 运行 再次获得完整列表。

因此,“显而易见”的解决方法是更改​​项目的属性以针对 x64 构建。