"Windows can't open this file" .appref-ms 扩展名

"Windows can't open this file" for .appref-ms extension

我正在尝试 运行 ClickOnce 安装程序,但我从 Windows 7 收到这条无用的错误消息:"Windows can't open this file".

文件扩展名为.appref-ms

有没有人看过这个或者有什么建议?

我在客户的机器上遇到了这个问题。操作系统似乎不知道文件扩展名的正确关联,但实际上 .appref-ms 不是正常的扩展名,不直接与任何程序关联。

我最终找到了以下页面:

https://social.msdn.microsoft.com/forums/windows/en-us/9ff7867c-7e57-468c-a632-762a76f66f6d/windows-7-64-bit-unable-to-open-apprefms

这包含一些有关恢复可能导致此问题的可能损坏的注册表项的信息。但是,在我看来,将 dfshim.dll 与 .appref-ms 相关联给出了错误的建议。当我这样做时,它在注册表中创建了一个与该 dll 的关联,但是在检查工作机器的注册表时,不存在这样的关联。此关联还会导致 .appref-ms 文件丢失其应用程序特定图标,而是显示此图标:

此外,这个关联实际上并没有成功启动我的应用程序,但对于其他一些它可能真的有效(我不知道)。

正确的解决方案是恢复更多的注册表项,这些注册表项级联以允许 windows 将 .appref-ms 文件更像是应用程序,而不是用程序打开的文件。必要的键如下(我可能过分热心地包括了一些不是绝对必要的,但至少其中一些是):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.appref-ms]
@="Application.Reference"

[HKEY_CLASSES_ROOT\.application]
"Content Type"="application/x-ms-application"
@="Application.Manifest"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Application.Reference\shell]
@="open"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Application.Reference\shell\open]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Application.Reference\shell\open\command]
@="\"C:\Windows\System32\rundll32.exe\" \"C:\Windows\System32\dfshim.dll\",ShOpenVerbShortcut %1|%2"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Application.Manifest\shell]
@="open"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Application.Manifest\shell\open]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Application.Manifest\shell\open\command]
@="\"C:\Windows\System32\rundll32.exe\" \"C:\Windows\System32\dfshim.dll\",ShOpenVerbApplication %1"

这似乎适用于 .application 和 .appref-ms 类型的文件。第一个键将 .appref-ms 标识为 class "Application.Reference"。 "Classes\Application.Reference" 下的后面的键定义了这些类型的启动方式。这些不是 Windows 试图帮助您创建的简单 "open with" 关联(并且将在 HKCU 而不是 HKLM 下创建)。