Windows 7文件扩展名关联
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows 7文件扩展名关联相关的知识,希望对你有一定的参考价值。
我指的是Windows 7。
我有一些代码,它将某个扩展名与我的应用程序相关联,如webJose在下一页中所提出的:What registry keys are responsible for file extension association?(但我正确地写入HKEY_CURRENT_USER Software Classes而不是HKEY_CLASSES_ROOT,如建议的那样)
以上工作最初,或者如果没有与扩展相关联的其他程序。但是,在使用Windows 7内置的“选择默认程序...”(在“打开方式”下的文件右键单击上下文菜单下找到)后,它会将扩展名与您选择的任何新程序重新关联。
此时发生的情况是系统更改了“HKEY_CURRENT_USER Software Microsoft Windows CurrentVersion Explorer FileExts \ UserChoice”,因此新选择的程序将接管。
运行上面的代码,重新获得对扩展的控制将无法正常工作。重新获得控制权的唯一方法是:
- 编辑UserChoice - > Progid值,这是不允许的(既不以编程方式也不使用regedit.exe - 访问被拒绝)。
- 或删除UserChoice值并确保您的应用程序是 OpenWithList下的MRUList值中的第一个(这可以使用regedit.exe但不能以编程方式实现)
我的问题是:有没有办法以编程方式实现这一目标?在与另一个程序关联后,可以更改哪些注册表值以重新获得对扩展的控制权?
我知道很明显,如果用户通过资源管理器将关联的应用程序设置为扩展,那么预期它会以相同的方式再次将扩展重新关联到不同的应用程序。
但问题是我的应用程序中有一个按钮,它使用上面提到的代码来检查与我的应用程序的扩展关联。不幸的是,在上述情况下,我的应用程序会显示一条消息,确认扩展已经成功关联,而不是!那么有办法解决这个问题吗?
删除UserChoice
应将默认程序恢复为标准文件关联键(以HKCU中的ProgID开头)。除非您还可以删除OpenWithList
,这将在极端偏见中恢复。
编辑:在MSDN上查看Registry Key Security and Access Rights,特别是RegSetKeySecurity函数。请记住,在删除密钥之前,您需要授予自己对密钥的管理控制权。
关于Window 7中的文件关联,一个新的“问题”已经过了。
这就是其中之一:你要争取自己的权利。
假设你喜欢跑步
REG.exe DELETE "HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.movUserChoice" /f /va
你会得到ACCESS DENYED。当您在Regedit'UserChoice'中检查密钥的安全设置时,您将看到为您设置了一个设置窗口,拒绝为当前用户设置'set'。那你可以在regedit中更改/删除此设置,现在你可以删除UserChoice。然而,对于程序员/脚本编写者来说,设置有点讨厌,因为现在有很多工具可以在注册表中设置ACL。但是,这里有一些解决方法,允许删除ACCESS DENYED的密钥(当然这仅限于你有权更改权限):
ResetMovAssoc.cmd
::create 'empty.hiv'
REG ADD "HKCUemptyKey" /f
REG SAVE "HKCUemptyKey" empty.hiv /y
@REG DELETE "HKCUemptyKey" /f >nul
::^-note you can add @[...] >nul to the other entries as well to run them quite
:: Delete Reg key by replacing it with an empty hiv
REG RESTORE "HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.mov" empty.hiv
del empty.hiv
总结一下,这里的主要内容是包含just和empty键的REG RESTORE + Registry配置单元文件。在Regedit中,只相当于一个空的注册表结构文件的“导入”(注意:这是一个配置单元文件而不是* .reg文件)。
以上是关于Windows 7文件扩展名关联的主要内容,如果未能解决你的问题,请参考以下文章
错误 - 在Windows 7中使用“Git Bash Here”时,“文件扩展名.vbs没有脚本引擎”