Tam*_*mer 7 file-association windows-7
我指的是Windows 7.
我有一些代码将某个扩展名与我的应用程序相关联,如webJose在下一页所提出的: 哪些注册表项负责文件扩展名关联? (但我按照建议正确写入HKEY_CURRENT_USER\Software\Classes而不是HKEY_CLASSES_ROOT)
以上工作最初,或者如果没有与扩展相关联的其他程序.但是,在使用Windows 7内置的"选择默认程序..."(在"打开方式"下的文件右键单击上下文菜单下找到)后,它会将扩展名与您选择的任何新程序重新关联.
此时发生的情况是系统更改了"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts \\ UserChoice",因此新选择的程序将接管.
运行上面的代码,重新获得对扩展的控制将无法正常工作.重新获得控制权的唯一方法是:
我的问题是:有没有办法以编程方式实现这一目标?在与另一个程序关联后,可以更改哪些注册表值以重新获得对扩展的控制权?
我知道很明显,如果用户通过资源管理器将关联的应用程序设置为扩展,那么预期它会以相同的方式再次将扩展重新关联到不同的应用程序.
但问题是我的应用程序中有一个按钮,它使用上面提到的代码来检查与我的应用程序的扩展关联.不幸的是,在上述情况下,我的应用程序会显示一条消息,确认扩展已经成功关联,而不是!那么有办法解决这个问题吗?
删除UserChoice应将默认程序恢复为标准文件关联键(以 HKCU 中的 ProgID 开头)。除非您也可以删除OpenWithList,这将带来极大的偏见。
编辑: 查看MSDN 上的注册表项安全和访问权限,特别是RegSetKeySecurity函数。请记住,您需要先授予自己对该密钥的管理控制权,然后才能将其删除。
| 归档时间: |
|
| 查看次数: |
15549 次 |
| 最近记录: |