我想让ie的IWebBrowser不需要选择证书,所以我使用InternetSetOption()
来做到这一点。代码是:使用WinInet :: InternetSetOption()总是返回false并且GetLastError()返回12018
HCERTSTORE hMyStore = CertOpenSystemStore(0, _T("MY");
PCCERT_CONTEXT pDesiredCert = NULL;
pDesiredCert=CertFindCertificateInStore(
hMyStore,
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
CERT_FIND_SUBJECT_STR,
L"cnstr",
NULL);
if (InternetSetOption (NULL, INTERNET_OPTION_CLIENT_CERT_CONTEXT,
(LPVOID)pDesiredCert, sizeof(CERT_CONTEXT)) == FALSE) {
DOWRD i = GetLastError();
}
...
我在“我的”商店中获得证书。当我使用InternetSetOption()
设置证书,它返回false,错误代码为12018.我搜索关于此错误代码的一些资料:
“ 12018 ERROR_INTERNET_INCORRECT_HANDLE_TYPE手柄提供的类型不正确,此操作”
我想设置的全局设置,所以我设置为NULL第一个参数,并在功能InternetSetOption()
的第一个参数不能NULL
?我如何正确设置选项?
为什么c#被标记?这是什么语言?如果C++从标签中删除c# –
对不起,因为我认为C#使用了一些api。我已经删除了。 – lvshuchengyin
您不能使用NULL句柄,IE不会公开它使用的HINTERNET句柄。这当然会给这种方法带来厄运。通过Google搜索“为Internet Explorer安装证书”提前完成。 –