zheshiwodehao 2013-10-30 05:53 采纳率: 0%
浏览 1235

获取ie自动保存用户名密码

IPStore接口获取IE自动保存的用户名密码(最后一句怎么修改):

//动态加载pstorec.dll,得到PStoreCreateInstance函数地址

typedef HRESULT (WINAPI tPStoreCreateInstance)(IPStore *, DWORD, DWORD, DWORD);
HMODULE hpsDLL;
hpsDLL = LoadLibrary("pstorec.dll");

tPStoreCreateInstance pPStoreCreateInstance;
pPStoreCreateInstance = (tPStoreCreateInstance)GetProcAddress(hpsDLL, "PStoreCreateInstance");

IPStorePtr PStore;
HRESULT hRes = pPStoreCreateInstance(&PStore, 0, 0, 0);

IEnumPStoreTypesPtr EnumPStoreTypes;
hRes = PStore->EnumTypes(0, 0, &EnumPStoreTypes);//指定枚举区域

if (!FAILED(hRes))
{
GUID TypeGUID;
char szItemName[512];

char szItemData[512];
char szResName[1512];
char szResData[512];
char szItemGUID[50];

//枚举密码类型
HRESULT hr=EnumPStoreTypes->raw_Next(0,&TypeGUID,0);

最后一行总出错(可以编译通过,但hr值不对),跟踪发现raw_Next()函数运行出错了,求大侠们指点,应如何改正(Win7系统)。

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-03-08 00:42
    关注

    该回答引用ChatGPT

    根据你提供的代码,似乎缺少了一个循环来遍历枚举出来的密码类型。在枚举类型后,应该使用一个循环遍历每个密码类型,然后获取每个密码类型中的密码项。以下是一个修改建议,可以尝试使用:

    //枚举密码类型
    while (SUCCEEDED(EnumPStoreTypes->raw_Next(1, &TypeGUID, NULL)))
    {
        IEnumPStoreTypesPtr EnumPStoreItems;
        hRes = PStore->EnumItems(&TypeGUID, NULL, NULL, 0, &EnumPStoreItems);
        if (!FAILED(hRes))
        {
    //遍历密码项
            while (SUCCEEDED(EnumPStoreItems->raw_Next(1, &szItemGUID, NULL)))
            {
    //获取密码项名称
                hRes = PStore->ReadItem(&TypeGUID, szItemGUID, szResData, sizeof(szResData), &szItemName, sizeof(szItemName), 0);
                if (!FAILED(hRes))
                {
    //处理密码项名称
    //...
    
                    //获取密码项数据
                    hRes = PStore->ReadItem(&TypeGUID, szItemGUID, szResData, sizeof(szResData), NULL, 0, 0);
                    if (!FAILED(hRes))
                    {
                        //处理密码项数据
                        //...
                    }
                }
            }
        }
    }
    

    此外,请注意,使用IPStore接口来获取密码可能会存在以下限制和问题:

    • 该接口只能获取IE浏览器自动保存的密码,不能获取其他应用程序(如Chrome、Firefox等)保存的密码。
    • 如果用户已经关闭了IE浏览器的自动保存密码功能,那么无法获取密码。
    • 获取密码需要使用高权限,可能需要管理员权限或者特殊权限,因此在实际使用时需要格外小心,以防止出现安全问题。
    • 这种方法可能会在未来的IE版本中被修改或禁用,因此不建议在生产环境中使用。
    评论

报告相同问题?

悬赏问题

  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置