C#Open File With Associated Application传递参数

时间:2011-02-16 13:47:27

标签: c# arguments processstartinfo


我正在尝试启动为扩展指定其他参数的默认应用程序:

 ProcessStartInfo p = new ProcessStartInfo();
 p.Arguments = "myargument";
 p.FileName = "file.ext";
 Process.Start(p);

应用程序开始正确打开指定的文件。 问题是它只得到一个参数(文件的名称),完全忽略了额外的“参数”。
有可能做我想要的吗? 难道我做错了什么?

提前感谢您的帮助,
保罗

3 个答案:

答案 0 :(得分:1)

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

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

Finding the default application for opening a particular file type on Windows

答案 1 :(得分:0)

你的“论点”究竟是什么,它是否有空格,反斜杠等?

    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();

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

答案 2 :(得分:-1)

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

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

编辑:

我不知道它是否适用于参数,但我正在寻找启动相关程序......