我正在解析ESE 数据库文件,即WebCacheV01.dat。这是 IE 10 开始存储所有浏览历史记录和其他信息的文件。我正在使用 JET Blue CPP api 来解析这个文件。
我可以读取整数或长整数类型的任何列值,但无法读取字符串类型的列值。
例如,我打开了“MSysObjects”表并想要检索“Name”列的值。
这是示例代码
for( err = ::JetMove( sessionID, tableId, JET_MoveFirst, 0 );
JET_errSuccess == err;
err = ::JetMove( sessionID, tableId, JET_MoveNext, 0 ) )
{
JET_COLUMNID columnid = 12/*columnid of the Name column*/;
char *pszBuff = new char[2048];
if( pszBuff )
{
long lReadBytes;
memset(pszBuff, 0, 2048);
err = ::JetRetrieveColumn( sessionID,
tableId,
columnid,
pszBuff,
2047,
&lReadBytes,
0,
NULL);
delete[] pszBuff;
}
}
JetRetrieveColumn 的返回值为 -1507,它不过是 JET_errColumnNotFound。我已经使用 ESEDatabaseViewer 工具验证了 MSysObjects 表包含 25 列。这意味着列 18 不是无效的。
如果有人知道如何从 ESE 数据库中检索字符串值,请告诉我。
提前谢谢你。