我特指的是Windows 7操作系统。我有一段代码,可以将某个扩展名与我的应用程序关联起来,正如网页上Jose所提出的那样:
哪些注册表键负责文件扩展名相关联?
(但我正确地将其写到了HKEY_CURRENT_USER\Software\Classes而不是建议中的HKEY_CLASSES_ROOT)。
以上在最初或扩展名未与其他程序相关联时有效。然而,在使用Windows 7内置的“选择默认程序…”(在文件右键单击上下文菜单下找到“打开方式”下)之后,它会重新将扩展名与您选择的任何新程序相关联。
这时,系统会更改“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\\UserChoice”并且新选择的程序接管了扩展名。
运行以上代码将无法重新获得扩展名的控制权。重新获得控制权的唯一方法是通过以下两种方式之一:
1. 编辑UserChoice-> Progid值,但这是不允许的(无论是编程还是使用regedit.exe - 拒绝访问)。
2. 或者删除UserChoice值,并确保您的应用程序在\OpenWithList下的MRUList值中排在第一位(可以使用regedit.exe实现,但无法编程实现)。
我的问题是:是否有一种编程方式来实现这一点?在扩展名与其他程序相关联后,可以更改哪些注册表值来重新获得其控制权?
我知道,如果用户通过资源管理器设置相应扩展名的关联应用程序,那么预计将以相同的方式再次进行关联。
然而,问题在于我的应用程序中有一个按钮,该按钮使用上述代码检查扩展名是否与我的应用程序相关联。不幸的是,在出现上述情况时,当扩展名未关联到该应用程序时,我的应用程序会显示确认消息,表示成功地关联了该扩展名!因此,是否有解决此问题的方法?
以上在最初或扩展名未与其他程序相关联时有效。然而,在使用Windows 7内置的“选择默认程序…”(在文件右键单击上下文菜单下找到“打开方式”下)之后,它会重新将扩展名与您选择的任何新程序相关联。
这时,系统会更改“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\\UserChoice”并且新选择的程序接管了扩展名。
运行以上代码将无法重新获得扩展名的控制权。重新获得控制权的唯一方法是通过以下两种方式之一:
1. 编辑UserChoice-> Progid值,但这是不允许的(无论是编程还是使用regedit.exe - 拒绝访问)。
2. 或者删除UserChoice值,并确保您的应用程序在\OpenWithList下的MRUList值中排在第一位(可以使用regedit.exe实现,但无法编程实现)。
我的问题是:是否有一种编程方式来实现这一点?在扩展名与其他程序相关联后,可以更改哪些注册表值来重新获得其控制权?
我知道,如果用户通过资源管理器设置相应扩展名的关联应用程序,那么预计将以相同的方式再次进行关联。
然而,问题在于我的应用程序中有一个按钮,该按钮使用上述代码检查扩展名是否与我的应用程序相关联。不幸的是,在出现上述情况时,当扩展名未关联到该应用程序时,我的应用程序会显示确认消息,表示成功地关联了该扩展名!因此,是否有解决此问题的方法?