.appref-ms扩展名为“Windows无法打开此文件”

我试图运行一个ClickOnce安装程序,我从Windows 7得到这个无用的错误信息:“Windows无法打开这个文件”。

文件扩展名是.appref-ms

有没有人看过这个或有任何build议?

Windows无法打开这个文件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文件丢失应用程序特定的图标,并显示此图标: dfshim.dll图标

另外,这个协会实际上并没有成功启动我的应用程序,但是对于其他一些实际上它可能工作(我不知道)。

正确的解决方案是恢复更多的注册表项,这些注册表项可级联以允许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标识为类“Application.Reference”。 “Classes \ Application.Reference”下的后面的键定义了这些类型是如何启动的。 这些并不是简单的“打开”的协会,Windows试图帮助您创建(并将在HKCU而不是HKLM创建)。