3

我正在编写一个服务,因此使用 WinHTTP 而不是 WinInet。在阅读 MSDN 时,它谈到了设置WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS( http://msdn.microsoft.com/en-us/library/windows/desktop/aa384066(v=vs.85).aspx ) 以让 WinHTTP 从 WinInet 获取凭据。

现在我正在测试我的服务,并在用户上下文下运行它,并试图让它使用基本身份验证对代理进行身份验证。由于我没有用户凭据的先验知识,我希望它们从 WinInet 传下来。我正在调用用户和密码WinHttpSetCredentials的值,但没有成功。NULL

bResults = WinHttpSetCredentials( hRequest, 
                                  dwTarget, 
                                  dwSelectedScheme,
                                  NULL,
                                  NULL,
                                  NULL );

我还将注册表项 HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ShareCredsWithWinHttp 设置为 DWORD 值 1

并打电话

BOOL bSetValue = TRUE;      
if(!WinHttpSetOption(hSession,WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS,
                     &bSetValue,sizeof(bSetValue))){

    printf("Setting options failed\n");
}else{
    printf("Settings options success\n");
}

上面的代码似乎返回得很好。

我似乎找不到很多使用默认密码或从 WinInet 获取的 WinHttp 示例。有没有人有这方面的经验或他们可以指出我的地方?谢谢。

4

0 回答 0