2017-09-27 3 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");} 

Erreur d'obtention 0x80070057 (-2147024809) Le paramètre est incorrect. Quelqu'un peut-il aider ici?CertCreateCertificateChainEngine renvoie une erreur dans Windows 7

+0

Je viens de tombé sur la même question. J'ai cherché et essayé de nombreux exemples et rien ne fonctionne. Vous avez posé cette question il y a 5 mois. Connaissez-vous la réponse, s'il vous plaît dites-moi? – QuangNHb

Répondre

0

J'espère que vous avez déjà réussi à résoudre ce problème. Sinon, voici ma réponse un peu tardive:

Il semble que vous utilisiez le example code de Microsoft pour créer une chaîne de certificats. Malheureusement, il semble être démodé; Si vous examinez la documentation pour CERT_CHAIN_ENGINE_CONFIG, vous verrez qu'il y a deux autres variables membres qui doivent être initialisées dans Windows 7, hExclusiveRoot et hExclusiveTrustedPeople.

Vous pouvez les mettre à NULL (si vous en avez pas besoin) pour prendre soin de l'erreur:

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

J'utilise Windows 7 et rien ne fonctionne.J'ai aussi 0x80070057. Pouvez-vous écrire un exemple de travail? – QuangNHb

+0

@QuangNHb Vous devrez peut-être configurer votre programme pour cibler la plate-forme correcte; voici quelques réponses qui pourraient vous aider: [Answer 1] (https://stackoverflow.com/questions/34313023/i-get-0x80070057-error-code-on-certcreatecertificatechainengine-func/34480267#34480267), [Réponse 2] (https://stackoverflow.com/questions/6429251/vs2010-structure-change-in-cryptoapi-v7-0a-vs-v6-0a-wincrypt-h/6549295#6549295) – frslm

+0

@frislm Merci pour me répondre. J'utilise Windows 7 et Visual Studio 2015 pour compiler. Je ne veux pas exécuter le programme sur Windows XP. _WIN32_WINNT est égal à 0x0601. – QuangNHb