2017-09-27 65 views
2
ChainConfig.cbSize = sizeof(CERT_CHAIN_ENGINE_CONFIG); 
ChainConfig.hRestrictedRoot = NULL; 
ChainConfig.hRestrictedTrust = NULL; 
ChainConfig.hRestrictedOther = NULL; 
ChainConfig.cAdditionalStore = 0; 
ChainConfig.rghAdditionalStore = NULL; 
ChainConfig.dwFlags = CERT_CHAIN_CACHE_END_CERT; 
ChainConfig.dwUrlRetrievalTimeout = 0; 
ChainConfig.MaximumCachedCertificates = 0; 
ChainConfig.CycleDetectionModulus = 0; 

//--------------------------------------------------------- 
// Create the nondefault certificate chain engine. 
if (CertCreateCertificateChainEngine(
     &ChainConfig, 
     &hChainEngine)){ 
     printf("A chain engine has been created.\n");} 

獲取錯誤0x80070057(-2147024809)參數不正確,有人可以幫忙嗎?CertCreateCertificateChainEngine在Windows 7中引發錯誤

+0

我只是偶然發現了同樣的問題。我搜索並嘗試了很多例子,沒有任何作品。 5個月前你問過這個問題。你知道答案,請告訴我嗎? – QuangNHb

回答

0

我希望你已經設法解決這個問題了。如果沒有,這裏是我的回答:

看起來您正在使用微軟的example code創建證書鏈。不幸的是,它似乎已經過時了;如果您查看CERT_CHAIN_ENGINE_CONFIG的文檔,則會看到在Windows 7,hExclusiveRoothExclusiveTrustedPeople中還有兩個需要初始化的成員變量。

你可以將它們設置爲NULL(如果你不需要他們)採取錯誤的護理:

ChainConfig.hExclusiveRoot = NULL; 
ChainConfig.hExclusiveTrustedPeople = NULL; 
+0

我使用Windows 7並沒有任何作品。我也得到0x80070057。你可以寫一個工作的例子嗎? – QuangNHb

+0

@QuangNHb你可能需要設置你的程序來定位正確的平臺;這裏有幾個答案,可能會幫助你: [答案1](https://stackoverflow.com/questions/34313023/i-get-0x80070057-error-code-on-certcreatecertificatechainengine-func/34480267#34480267), [回答2](https://stackoverflow.com/questions/6429251/vs2010-structure-change-in-cryptoapi-v7-0a-vs-v6-0a-wincrypt-h/6549295#6549295) – frslm

+0

@frislm謝謝回答我。我使用Windows 7和Visual Studio 2015進行編譯。我不想在Windows XP上運行程序。 _WIN32_WINNT等於0x0601。 – QuangNHb