我曾经能够通过在 Windows 注册表中注册给定的 mime 类型来启动本地安装的帮助应用程序。这使我能够允许用户单击一次链接到我们内部浏览器应用程序的当前安装。这在 Internet Explorer 5(大部分时间)和 Firefox 中运行良好,但现在在 Internet Explorer 7 中不起作用。
传递给我的 shell/open/command 的文件名不是下载安装包的完整物理路径。IE给我的路径参数是
"C:\Document and Settings\chq-tomc\Local Settings\Temporary Internet Files\
EIPortal_DEV_2_0_5_4[1].expd"
FileExists()
不幸的是,在调用或尝试创建TFileStream
对象时,这不会解析为物理文件。
物理路径缺少 Internet Explorer 隐藏缓存子目录的 Internet 临时文件,"Content.IE5\ALBKHO3Q"
其绝对路径将表示为
"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"
. ".expd"
/ mime 类型的注册"application/x-expeditors"
看起来像这样。
[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 函数将交回物理路径。