用默认的应用程序和参数打开文件

使用默认应用程序打开文件最简单的方法是:

System.Diagnostics.Process.Start(@"c:\myPDF.pdf"); 

但是,我想知道是否存在一个方法来设置参数的默认应用程序,因为我想打开一个确定的页码中的PDF。

我知道我怎么能创build一个新的过程和设置参数,但是这样我需要指出应用程序的path,我想有一个可移植的应用程序,而不必设置应用程序的path每次我在其他电脑上使用该应用程序。 我的想法是,我期望计算机已经安装了PDF阅读器,只能说什么网页打开。

谢谢。

编辑(感谢问题评论中的surfbutler评论)如果你想用默认应用程序打开文件,我的意思是没有指定Acrobat或Reader,你不能打开指定页面中的文件。

另一方面,如果你指定的是Acrobat或Reader,请继续阅读:


你可以做到这一点,而不必告诉完整的Acrobatpath,如下所示:

 Process myProcess = new Process(); myProcess.StartInfo.FileName = "acroRd32.exe"; //not the full application path myProcess.StartInfo.Arguments = "/A \"page=2=OpenActions\" C:\\example.pdf"; myProcess.Start(); 

如果您不希望PDF使用Reader打开,但是使用Acrobat,请像下面这样修改第二行:

 myProcess.StartInfo.FileName = "Acrobat.exe"; 

第二次编辑:findPDF扩展的默认应用程序

您可以查询registry以识别默认应用程序以打开pdf文件,然后相应地在您的stream程的StartInfo上定义FileName。 Again, thanks surfbutler for your comment :)

请按照以下问题获取详细信息: 查找在Windows上打开特定文件types的默认应用程序

我将由xsl链接的博客文章中的VB代码转换为C#,并对其进行了一些修改:

 public static bool TryGetRegisteredApplication( string extension, out string registeredApp) { string extensionId = GetClassesRootKeyDefaultValue(extension); if (extensionId == null) { registeredApp = null; return false; } string openCommand = GetClassesRootKeyDefaultValue( Path.Combine(new[] {extensionId, "shell", "open", "command"})); if (openCommand == null) { registeredApp = null; return false; } registeredApp = openCommand .Replace("%1", string.Empty) .Replace("\"", string.Empty) .Trim(); return true; } private static string GetClassesRootKeyDefaultValue(string keyPath) { using (var key = Registry.ClassesRoot.OpenSubKey(keyPath)) { if (key == null) { return null; } var defaultValue = key.GetValue(null); if (defaultValue == null) { return null; } return defaultValue.ToString(); } } 

编辑 – 这是不可靠的。 请参阅查找在Windows上打开特定文件types的默认应用程序 。

你可以试试

 Process process = new Process(); process.StartInfo.FileName = "yourProgram.exe"; process.StartInfo.Arguments = ..... //your parameters process.Start(); 

请为项目添加“属性”下的“设置”,并以这种方式使用这些设置,您可以将其configuration为默认的干净且易于configuration的设置

如何:在devise时创build一个新的设置

更新:下面的评论后

  1. 右键单击项目
  2. 添加新项目
  3. 在Visual C#项目下 – >常规
  4. select设置文件