我曾經能夠通過在Windows註冊表中註冊給定的mime類型來啓動本地安裝的幫助程序應用程序。這使我能夠讓用戶能夠點擊一次鏈接到我們內部瀏覽器應用程序的當前安裝。這在Internet Explorer 5(大部分時間)和Firefox中運行良好,但現在在Internet Explorer 7中不起作用。啓動註冊的mime幫助程序
傳遞給我的shell/open/command的文件名不是下載的安裝包的完整物理路徑。我通過IE遞給path參數
"C:\Document and Settings\chq-tomc\Local Settings\Temporary Internet Files\
EIPortal_DEV_2_0_5_4[1].expd"
此呼籲FileExists()
或試圖創建一個TFileStream
對象時,當不幸的是無法解決的物理文件。
的物理路徑缺少的Internet Explorer隱藏的緩存子目錄的"Content.IE5\ALBKHO3Q"
Temporary Internet Files文件的絕對路徑將被表示爲
"C:\Document and Settings\chq-tomc\Local Settings\Temporary Internet Files\
Content.IE5\ALBKHO3Q\EIPortal_DEV_2_0_5_4[1].expd"
是,子目錄隨機通過IE瀏覽器和生成只要IE將完整路徑傳遞給我的幫助器應用程序,就不應該擔心這種情況,但遺憾的是,這種情況並沒有發生。
安裝MIME幫助器應用程序不是問題。它由全球10,000多個用戶的全球登錄腳本安裝/更新。只有在用戶點擊內部網頁時纔會調用mime幫助程序,其中包含指向我們桌面瀏覽器應用程序安裝的鏈接。該安裝通過MIME類型"application/x-expeditors"
提供。/"application/x-expeditors"
mime-type的註冊看起來像這樣。
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.expd]
@="ExpeditorsInstaller"
"Content Type"="application/x-expeditors"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ExpeditorsInstaller]
"EditFlags"=hex:00,00,01,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ExpeditorsInstaller\shell]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ExpeditorsInstaller\shell\open]
@=""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ExpeditorsInstaller\shell\open\command]
@="\"C:\\projects\\desktop2\\WebInstaller\\WebInstaller.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Content Type\application/x-expeditors]
"Extension"=".expd"
我曾經考慮過枚舉所有用戶的IE緩存條目的,但我想它可能需要多長時間檢查它們全部或者我可以最終找到當前條目我之前執行舊的緩存條目被關注尋找。但是,括號內的文件名後綴"[n]"
可能是唯一鍵。
我已經嘗試wininet方法GetUrlCacheEntryInfo
但這需要的URL,而不是由IE移交的虛擬路徑。
我的希望是有一個Shell函數給定一個虛擬路徑將回傳物理路徑。