文件夹或文件包含空格时的参数长度

时间:2019-01-09 04:18:40

标签: c# .net

我已经在Windows中注册了文件关联,以在应用程序中打开特定的文件类型,以便当用户双击文件时,它将在我的应用程序exe中打开。

我从参数接收文件路径并打开它。但是,如果文件夹或文件名包含空格(有时超过一个空格),则参数长度大于1,并且我不知道如何将其解析为单个文件路径。 我无法控制传递的参数,因为Windows会将双击传递的参数传递给我的应用程序exe。

示例文件路径:C:\ Sample 1 \ file 1.rtf

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}

任何建议,谢谢。

2 个答案:

答案 0 :(得分:2)

您需要将文件名用引号引起来。

applicationname.exe "C:\Sample 1\file 1.rtf"

答案 1 :(得分:2)

您应该在传递参数之前引用它:

myapplication.exe "C:\Sample 1\file 1.rtf"

如果我们查看.sln下Visual Studio的HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln\Shell\Open\Command文件的关联,我们可以看到该关联引用了文件名:

"C:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\VSLauncher.exe" "%1"

您与程序的关联也应如此。或者,您可以将参数连接到单个字符串中:

var path = string.Join(string.Empty, args);

但是,这不太灵活。尤其是如果您需要传递多个参数。