您的位置:首页 > 编程语言

点评 Firefox 导入 IE Cookie 的代码

2010-12-06 10:19 399 查看
Firefox 在安装完成的时候,会问你要不要导入其它浏览器的数据,比如说导入 IE 的 cookie, history 之类。导入的代码在

browser/components/migration/src/nsIEProfileMigrator.cpp

其中,导入 cookie 的代码是:

/* Fetch and translate the current user's cookies.
Return true if successful. */
nsresult
nsIEProfileMigrator::CopyCookies(PRBool aReplace)
{
// IE cookies are stored in files named <username>@domain
.txt
// (in <username>'s Cookies folder. isn't the naming redundant?)
nsresult rv = NS_OK;
...

return rv;
}


这部分代码很长,我就不完整地贴在这里了。大体上就是想办法找到 IE 保存 cookie 文件的路径,其中 Vista 如果开启了 UAC 位置还不一样,还要分别作判断,然后把文件一个一个读进来。这样的实现其实并不完美。Win32 已经提供了一条现成的 API:

HANDLE FindFirstUrlCacheEntry(
__in     LPCTSTR lpszUrlSearchPattern,
__out    LPINTERNET_CACHE_ENTRY_INFO lpFirstCacheEntryInfo,
__inout  LPDWORD lpcbCacheEntryInfo
);


其中第一个参数如果设置为 "cookie:" 的话,就可以枚举出所有保存的 cookie. 这个 api 从 Windows 2000 开始就提供了,而 Windows 2000 也是 Firefox 所支持的最低版本的 Windows,所以没有兼容性的问题。

用好 Win32 API,往往可以起到事半功倍的效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: