如何在C#中设置文件类型关联
本文关键字:文件 类型 关联 设置 | 更新日期: 2023-09-27 18:20:31
我有一个MDI应用程序。这个MDI应用程序还有很多其他工具,包括编辑器。我想用MDI应用程序的编辑器打开所有的".txt"文件,从而使我的应用程序成为所有"txt"文件的默认查看器。
每当用户编辑".txt"文件时,MDI应用程序应启动,编辑器窗口应填充所选".txt"的文件内容。
有什么办法我能做到吗。
感谢
在我的应用程序中,我在启动时执行以下操作:
[System.Runtime.InteropServices.DllImport("Shell32.dll")]
private static extern int SHChangeNotify(int eventId, int flags, IntPtr item1, IntPtr item2);
private void GetDefaultsFromRegistry()
{
if (Registry.GetValue("HKEY_CLASSES_ROOT''MyApp", String.Empty, String.Empty) == null)
{
Registry.SetValue("HKEY_CURRENT_USER''Software''Classes''MyApp", "", "My File Type");
Registry.SetValue("HKEY_CURRENT_USER''Software''Classes''MyApp", "FriendlyTypeName", "My Friendly Type Name");
Registry.SetValue("HKEY_CURRENT_USER''Software''Classes''MyApp''shell''open''command", "",
"path''to''my''app '"%1'"");
Registry.SetValue("HKEY_CURRENT_USER''Software''Classes''.ext", "", "MyApp");
//this call notifies Windows that it needs to redo the file associations and icons
SHChangeNotify(0x08000000, 0x2000, IntPtr.Zero, IntPtr.Zero);
}
}
当然,所有路径、名称和扩展名都更改为您的应用程序。
不过,要小心扰乱用户的.txt文件关联。我在每次启动时都会检查任务,因为我的应用程序使用自定义类型,并且只部署在内部映像系统上。我不知道你的应用程序部署在哪里,但如果我从互联网上下载的一些随机实用程序不断改变我的.txt文件关联,我会非常恼火,我相信很多其他人也会这样。
您需要更改此注册表项:
HKCR'txtfile'shell'open'command
将程序的默认值更改为参数末尾为%1。然后在您的程序中处理命令行args以执行您想要的操作。
文件关联可以通过编程方式这样完成,也可以通过像这样的注册表项来完成