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 MATLAB动图的问题
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名