【问题标题】:Starting an executable with a custom configuration file使用自定义配置文件启动可执行文件
【发布时间】:2025-12-24 08:10:11
【问题描述】:

我正在开发一个简单的 C# 项目,该项目要求我启动一个程序,将其指向一个自定义配置文件。具体来说,我正在使用自定义配置文件启动 DOSBox,该文件告诉它在启动时要做什么。我以前使用过快捷方式,基本上这是我在快捷方式中添加的内容,并且效果很好。

"D:\Video Game Emulation\DOSBox\DOSBox.exe" "D:\Video Game Emulation\DOS Windows\GAMES\CUSTOM.CONF"

现在我正在编写的程序只是通过 DOSBox 启动一堆旧 DOS 游戏的一种更漂亮的方式,每个游戏都有自己的自定义配置。所以在我的按钮代码中,这就是我所拥有的。

Process.Start("D:\\Video Game Emulation\\DOSBox\\DOSBox.exe", "D:\\Video Game Emulation\\DOS Windows\\GAMES\\CUSTOM.CONF");

据我了解,这是启动可执行文件并为其提供自定义选项的正确方法。但是,它启动得很好,但没有正确传递配置文件。我也试过这个。

Process.Start("D:\\Video Game Emulation\\DOSBox\\DOSBox.exe", -conf "D:\\Video Game Emulation\\DOS Windows\\GAMES\\CUSTOM.CONF");

也没有运气。有人知道我需要更改什么才能正确地为 DOSBox 提供自定义配置文件吗?

【问题讨论】:

  • 您是否尝试过在进程对象上使用 StartInfo。

标签: c# dosbox


【解决方案1】:

将路径作为字符串传递,因此请加上引号并进行测试。

基本上原因是在检查 Intellisense(拼写?)时,它显示 Start(string fileName, string arguments) 的重载。

因此,确保将字符串传递给两者不会有什么坏处。

编辑:我想我可能在您编辑帖子之前就已经看到了。代码中有引号吗?

【讨论】:

  • 我在发布后不久添加了它们,当我意识到我需要它们时。我在测试时有它们,但在我输入帖子时忘记了它们。
  • 将参数的 -conf 放在第二个引号内怎么样?
  • 刚试过。没运气。也试过这样:“-conf 'D:\\Video Game Emulation\\DOS Windows\\GAMES\\CUSTOM.CONF'”
  • 好吧,如果您使用它,它看起来肯定应该在字符串中,但除此之外,我认为唯一有帮助的就是从对哪个部分不起作用的一些基本故障排除开始。因此,假设您仅使用文件路径,它应该可以工作,那么最简单的参数是 -fullscreen 并查看是否有效。我的猜测是传递参数有问题,或者它正在做一些意想不到的事情,比如打开后立即关闭。
  • 刚刚尝试使用“-fullscreen”作为唯一参数。它工作正常。顺便说一句,即使将其指向配置文件路径,它也会启动并运行良好,但它会加载默认配置,而不是我试图指向的配置。
【解决方案2】:

好的,抱歉花了这么长时间才回到这个帖子,但我一直很忙。感谢 dakre18、StarPilot 和 Bearcat9428 的帮助,我想通了。 似乎必须在 StartInfo 中指定工作目录才能使其工作。事情现在似乎奏效了。感谢大家的帮助!

【讨论】: