我正在编写一个服务,因此使用 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 示例。有没有人有这方面的经验或他们可以指出我的地方?谢谢。