增加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)來避免系統重新啓動。非常非常感謝你! –