C#文件类型关联

时间:2011-05-31 10:45:20

标签: c# windows winforms

如何将应用程序主要添加到给定文件类型的“打开方式”菜单中?

E.g。我做了一个简单的文本文件查看器,我已经做了相同的安装项目, 我希望将文本文件查看器与系统中的所有.txt文件相关联, 当用户双击任何.txt文件时,我的应用程序应该打开。

Open with menu http://i4.photoblog.com/photos/27294-1306838510-0.jpg

3 个答案:

答案 0 :(得分:2)

你可以使用这个伟大的课程:http://www.mentalis.org/soft/class.qpx?id=5

答案 1 :(得分:1)

您必须更改注册表项:HKEY_CLASSES_ROOT\txtfile\shell\open\command。看看regedit.exe。您还可以查看此密钥:HKEY_CLASSES_ROOT\.txt

要操作注册表项,请在Docs使用System.Win32.Registry

答案 2 :(得分:1)

这是关于如何做到这一点的一种方式(在VB中)。 ApplicationTag是注册表的简称,例如editor3.1。您可以使用regedit检查注册表以查看正在发生的情况,并且在测试应用程序的这一部分之前,您可能希望创建一个还原点。

Imports Microsoft.Win32

...

Registry.SetValue("HKEY_CURRENT_USER\software\classes\" & FileType, "", applicationTag)
q = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & FileType, True)
If q IsNot Nothing AndAlso q.GetValue("ProgID", "notfound") <> "notfound" Then
  q.SetValue("ProgID", appTag) ' for the local user, overrides hkcr
  End If
appKey = "HKEY_CURRENT_USER\software\classes\" & applicationTag
Registry.SetValue(appKey, "", "text")
Registry.SetValue(appKey & "\shell", "", "open")
Registry.SetValue(appKey & "\shell\open", "", "")

Registry.SetValue(appKey & "\shell\open\command", "", """" & ApplicationPath & """ ""%1""")
Registry.SetValue(appKey, "", "text")
appKey = "HKEY_CURRENT_USER\software\classes\CLSID\" & ApplicationGuid
Registry.SetValue(appKey, "", applicationTitle)
Registry.SetValue(appKey & "\ProgID", "", applicationTag)