this-app-cannot-run-on-your-pc

上周突然从某一天开始,右键菜单中的 Open with Sublime Text 突然出现了这个问题,Sublime Text 本身可以正常使用,但是用右键菜单中的 Open with Sublime Text 来打开文件的话,就会弹出“此应用无法在你的电脑上运行”这一提示。不得不事先将 Sublime Text 打开,然后将所需编辑的文件拖入打开……煞是令人苦恼。

搜索也未能发现解决方案,似乎只有在知乎上有人问过这个问题,但没有解决方案,也没有相关的英文搜索结果……更新至 Build 3114 ,并尝试重装 Sublime Text 后,也没有解决。

无奈下,在注册表中查看了一下 Open with Sublime Text 的键值,在这里发现了问题。

该键值位于 HKEY_CLASSES_ROOT\*\shell\Open with Sublime Text\command ,举个我的例子,默认安装情况下的值为 D:\Program Files\Sublime Text 3\sublime_text.exe "%1" ,考虑到可能是空格的问题(顺便参考了一下 Atom 的右键菜单键值),加引号修改为 "D:\Program Files\Sublime Text 3\sublime_text.exe" "%1" 后工作正常。

上述思路不完全正确。

考虑到之前没有出现这个问题,发现情况与 Unquoted Service Paths 现象有点相像,然后我在 D 盘目录下发现了一个名为’Program’的文件,打开后发现是某 license manager 的日志文件,问题就这么解决了。(2333 这个软件没有处理好路径中的空格……)

以 D:\Program Files\Sublime Text 3\sublime_text.exe 为例,windows 默认的解析方式是

D:\Program Files\Sublime Text 3\sublime_text.exe

D:\Program Files\Sublime Text 3\sublime_text.exe

D:\Program Files\Sublime Text 3\sublime_text.exe

空格后的内容被视为参数,若当前文件不存在则尝试下一匹配方式。

因此,删除对应的文件或者对键值路径加引号都能解决问题。但为了确保其他存在类似 Unquoted Paths 的情况的软件能够正常运行,最好删除对应的无关文件。

具体关于 Unquoted Service Paths 的内容:

http://www.commonexploits.com/unquoted-service-paths/

http://www.tenable.com/sc-report-templates/microsoft-windows-unquoted-service-path-enumeration

一个修复脚本(针对 service 的):

https://gallery.technet.microsoft.com/scriptcenter/Windows-Unquoted-Service-190f0341