增加OpenWithList(不知道这是否属于在超级用户,但它似乎有一个cmd.exe的标签在这里,所以这里去...)FTYPE/ASSOC的优先级和命令行
作为背景,我正在开发一个Firefox附加组件(这个问题不需要Firefox的知识,因为Firefox附加组件可以调用命令行)。附加组件旨在为cmd.exe构建不同类型的快捷方式(特别是为了我的项目https://github.com/brettz9/webappfind,它允许直接从桌面打开文件到网络应用程序)。
不管怎么说,我想给用户这些快捷键关联的选项:
- 至于具体的文件扩展名或文件类型的默认处理程序。
- 到开放中展示了应用程序(即使用户选择不使应用程序的默认处理程序)列表
至于默认处理,我已经找到了ftype
和assoc
(和associate
)命令,但我已经读过,用户选择将覆盖他们的行为。有什么方法可以确保我可以在命令行中将文件扩展名关联到类型和特定的可执行文件(直到用户再次更改它),或者如果它是不可能的,那么至少通过C++或类似的文件可以获得优先级?
至于打开方式列表:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\<file extension>\OpenWithList
...在我的测试(与一个exe),此命令:
reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.svg\OpenWithList /v d /d D:\wamp\www\webappfind\cplusplus\WebAppFinder-view-mode-Firefox.exe
...确实导致的exe文件显示在:
reg query HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.svg\OpenWithList
...但它并没有显示出来,当我后来右键单击与“.SVG”扩展名的文件。
我真的很感谢这两点的帮助。
非常渴望尝试这一点,并打算在第二天或至少在赏金结束之前这样做。谢谢! –
我目前太忙了,无法得到一个完整的确认,但是你的工作激励我找到其他有用的链接(请参阅https://github.com/brettz9/executable-builder/commit/ace744555385b61771fdf98d8d54f8b66611830b#diff-f120a35df9cdfce8a669cfadfaa86f3b ),尤其是OpenWithProgids优先于XP上的OpenWithList,SHChangeNotify和SHCNE_ASSOCCHANGED事件可以导致关联(一个使用VBScript)来避免系统重新启动。非常非常感谢你! –