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”,因此新选择的程序将接管。

运行上面的代码,重新获得对扩展的控制将无法正常工作。重新获得控制权的唯一方法是:

  1. 编辑UserChoice - > Progid值,这是不允许的(既不以编程方式也不使用regedit.exe - 访问被拒绝)。
  2. 或删除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没有脚本引擎”

windows 上让文件类型和程序关联的批处理程序。

如何优雅地使用命令行设置windows文件关联

2021年了,Python开发者不容错过的7个VS Code扩展

7.多关联双亲染色体片段代换系(CSSL)群体的代谢组分析

如何将应用程序与文件类型(文件扩展名)关联起来?