C# 当我的应用程序被设置为文件类型的默认处理程序时,如何确保带空格的路径作为单个参数传递?

C# 当我的应用程序被设置为文件类型的默认处理程序时,如何确保带空格的路径作为单个参数传递?,c#,winforms,command-line-arguments,C#,Winforms,Command Line Arguments,我已经创建了一个简约的pdf查看器,使用SumatraPDF作为我的主表单中的EXE 当我调试它时,一切正常。对于debug test参数,我有一个带空格的路径,C:\path with spaces\test.pdf,我的程序可以使用SumatraPDF打开 为了测试它如何在我的机器上工作,我使用Debug文件夹中的EXE,并将其作为打开PDF的默认程序。当我尝试打开测试pdf文件时,我的程序尝试打开这些路径,但失败: C:\Path C:\Path With Spaces\With C:\P

我已经创建了一个简约的pdf查看器,使用SumatraPDF作为我的主表单中的EXE

当我调试它时,一切正常。对于debug test参数,我有一个带空格的路径,C:\path with spaces\test.pdf,我的程序可以使用SumatraPDF打开

为了测试它如何在我的机器上工作,我使用Debug文件夹中的EXE,并将其作为打开PDF的默认程序。当我尝试打开测试pdf文件时,我的程序尝试打开这些路径,但失败:

C:\Path C:\Path With Spaces\With C:\Path With Spaces\Spaces\test.pdf 这让我相信我的程序不像其他已安装的程序那样运行,并且将一个文件名和它将要打开的空格作为一个参数来处理。例如,我可以将SumatraPDF设置为默认程序,打开带有空格的文件名不会有问题


因此,我的问题是,安装的程序读取参数是否与调试版本中的EXE不同?

打开测试pdf时,字符串[]数组的内容是什么?这是您所期望的[1]=c:\path,[2]=with,[3]=Spaces\text.pdf吗?还是别的什么?是的,所有的内容都和预期的一样。当我调试时,所有的东西都可以完美地使用空格,但是当使用exe本身而不是调试时,当有空格时,它似乎会给我的exe提供多个参数。为什么会将此标记为该问题的重复?事实上,这与问题正好相反。问题是关于进来的争论,而不是试图发出争论。是的,这是不同的,虽然我解决了我的问题。我不能仅仅使用EXE并期望得到正确的结果,我必须实际安装它:/同样的问题是:如何正确引用字符串。特别是第二个答案包含了关于命令解释器如何处理引号的非常好的信息。