我曾经能够通过在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函数给定一个虚拟路径将回传物理路径。