C#打开带有关联应用程序传递参数的文件

C#打开带有关联应用程序传递参数的文件,c#,arguments,processstartinfo,C#,Arguments,Processstartinfo,我正在尝试启动为指定附加参数的扩展注册的默认应用程序: ProcessStartInfo p = new ProcessStartInfo(); p.Arguments = "myargument"; p.FileName = "file.ext"; Process.Start(p); 应用程序将正确开始打开指定的文件。 问题是它只得到一个参数(文件名),完全忽略了其他“参数”。 有可能做我想做的吗? 我做错什么了吗 提前感谢您的帮助, 保罗你的“论点”到底是什么?它有空格、反斜杠等吗


我正在尝试启动为指定附加参数的扩展注册的默认应用程序:

 ProcessStartInfo p = new ProcessStartInfo();
 p.Arguments = "myargument";
 p.FileName = "file.ext";
 Process.Start(p);
应用程序将正确开始打开指定的文件。 问题是它只得到一个参数(文件名),完全忽略了其他“参数”。
有可能做我想做的吗? 我做错什么了吗

提前感谢您的帮助,
保罗

你的“论点”到底是什么?它有空格、反斜杠等吗

    Process process = new Process();
    process.StartInfo.FileName = @"C:\process.exe";
    process.StartInfo.Arguments = @"-r -d something else";
    process.StartInfo.CreateNoWindow = false;
    process.StartInfo.UseShellExecute = false;
    process.Start();
是否有任何原因导致您无法启动应用程序,然后在参数中使用扩展名和参数?

您的“参数”到底是什么,是否有空格、反斜杠等

    Process process = new Process();
    process.StartInfo.FileName = @"C:\process.exe";
    process.StartInfo.Arguments = @"-r -d something else";
    process.StartInfo.CreateNoWindow = false;
    process.StartInfo.UseShellExecute = false;
    process.Start();

你有什么理由不能启动应用程序,然后在你的参数中使用扩展名和参数吗?

我相信这是意料之中的。在幕后,Windows正在注册表中查找默认应用程序并创建一个新进程,并将您的文件名传递给它。如果转到命令提示符并键入“filename.ext argument”,则会得到相同的行为,即我的参数不会传递给应用程序

您可能需要做的是通过查看注册表来查找默认应用程序。然后,您可以使用参数启动该过程,而不是尝试通过文件类型关联启动。这里有一个关于如何在注册表中查找默认应用程序的答案:


我相信这是意料之中的。在幕后,Windows正在注册表中查找默认应用程序并创建一个新进程,并将您的文件名传递给它。如果转到命令提示符并键入“filename.ext argument”,则会得到相同的行为,即我的参数不会传递给应用程序

您可能需要做的是通过查看注册表来查找默认应用程序。然后,您可以使用参数启动该过程,而不是尝试通过文件类型关联启动。这里有一个关于如何在注册表中查找默认应用程序的答案:


我认为更简单的方法是使用cmd命令

 void LaunchAssociatedProgram(string filename) {
     Process.Start( @"cmd.exe", "/C start "+ filename );
 }
编辑:


我不知道它是否适用于参数,但这正是我想要启动相关程序的原因…

我认为更简单的方法是使用cmd命令

 void LaunchAssociatedProgram(string filename) {
     Process.Start( @"cmd.exe", "/C start "+ filename );
 }
编辑:


我不知道它是否适用于参数,但这正是我想要启动相关程序的原因…

您好,我的参数没有空格,但我的文件名不像示例代码中那样是可执行文件。我正在尝试通过扩展关联打开应用程序。我必须启动一个编辑器,传递要编辑的文件和一个用于进入特殊模式的参数。其思想是,文件扩展名总是已知的,但可执行文件的位置不是。您好,我的参数没有空格,但我的文件名不是示例代码中的可执行文件。我正在尝试通过扩展关联打开应用程序。我必须启动一个编辑器,传递要编辑的文件和一个用于进入特殊模式的参数。这个想法是,文件扩展名总是已知的,但可执行文件的位置却不知道。嗨,烦人,谢谢你的回答!很遗憾,我不得不从这4行切换到查询注册表项…嗨,烦人,谢谢你的回答!很遗憾,我不得不从这4行切换到查询注册表项。。。