Windows Vista IE 7保护模式开发者生存指南
2008-08-22 17:24:11 来源:WEB开发网以下将主要讲解插件需要怎么做才能正常工作于保护模式中,并在示例代码中介绍一些API,每个主题都相对应一个(或一对)按钮。
保护模式之下的解决办法
IE 7中增加了几个新的API,它们位于ieframe.dll中,插件可以使用它们来执行那些在保护模式中受限的功能,既可以直接通过iepmapi.lib链接到这些API,也可以通过LoadLibrary()/GetProcAddress()获取运行时的函数指针,如果想要插件在Vista之前的Windows平台上也能正常加载,就必须使用后一种方法了。
特权提升的大多数功能是通过一个代理进程(ieuser.exe)来实现的,只要IE进程运行于低完整性级别中,它就不能执行更高权限的任务,这也是ieuser.exe这个角色的目的所在。
在运行时探知保护模式
如果想知道插件是否运行在IE进程的保护模式中,可使用IEIsProtectedModeProcess():
HRESULT IEIsProtectedModeProcess(BOOL* pbResult);
如果返回值是一个成功的HRESULT且*pbResult为TRUE,则可以确定为保护模式;另外,基于*pbResult的返回值,也可决定代码下一步该怎么办:
HRESULT hr;
BOOL bProtectedMode = FALSE;
hr = IEIsProtectedModeProcess ( &bProtectedMode );
if ( SUCCEEDED(hr) && bProtectedMode )
// IE运行于保护模式中
else
// IE 未运行于保护模式中
文件系统的写入
当处于保护模式时,插件只能写到用户配置文件下的某些目录中,且只有Temp、 Temporary Internet Files、Cookies、Favorites这些低完整性级别目录为可写。但IE 7也照顾到了某些兼容性问题,对某些常用的目录进行虚拟化,对这些目录的写入会被重定向至Temporary Internet Files的子目录中;如果插件想要对敏感位置进行写入,如Windows目录,那么写操作会失败。
更多精彩
赞助商链接