如何使C#应用程序作为某些文件的默认程序?

我的应用程序里面有一个图片框。 当我在Windows中打开图像时,而不是打开以显示该图像的默认程序,我想使用我自己的应用程序并让包含图片框的程序显示图像。

我最近这样做了,虽然我使用了不同的动作,而不是默认的Open动作。

首先你找到一些扩展名的文件类型,比如说.jpg:

var imgKey = Registry.ClassesRoot.OpenSubKey(".jpg") var imgType = key.GetValue(""); 

然后,您找到可执行文件的路径并构建“命令字符串”:

 String myExecutable = Assembly.GetEntryAssembly().Location; String command = "\"" + myExecutable + "\"" + " \"%1\""; 

并注册您的可执行文件以打开该类型的文件:

 String keyName = imgType + @"\shell\Open\command"; using (var key = Registry.ClassesRoot.CreateSubKey(keyName)) { key.SetValue("", command); } 

您需要制作一些注册表项。 首先,您需要将文件扩展名与类名相关联(类名可以是任何内容,只需填写)。

因此,例如,如果我想将.foo扩展名与我的Blah.exe程序关联,我将创建以下注册表项(注意:在这种情况下,我将.foo与一个名为Foo.Document的类相关联,然后将该类与我的节目):

 Key: HKLM\SOFTWARE\Classes\.foo Value:  = “Foo.Document” Key: HKLM\SOFTWARE\Classes\Foo.Document Value:  = “Foo Document” Key: HKLM\SOFTWARE\Classes\Foo.Document\shell\open\command Value:  = “[blah.exe]” “%1″ 

您的场景让我觉得您完全可以选择任何JPG文件,右键单击该文件,选择“打开方式” – >选择默认程序,浏览到您的C#程序并选择“始终使用所选”程序打开这种文件“

如果您认为需要以编程方式执行此操作,则需要在注册表中设置此项。

这是一个SO链接 ,显示了该过程。

要将您的应用程序设置为Jpeg文件的默认应用程序(示例),您可以:

  • 使用Regedit.exe并转到项目HKCR\.jpg\并创建类似此shell\open\command子文件夹。
  • 在那里创建一个新的字符串值并将默认值编辑为"path_to_exe" "%1"
  • 编辑您的EXE,以便它可以读取在命令行上传递的参数,如果有的话,在picturebox中打开它(是的,许多其他控件,因为文件存在,文件可以加载到图片框等等)