2016-04-17 2 views
0

で信頼されたルートとして自動的にCryptUIWizImportを使用して証明書:私は必要としながら、インポートは、私が信頼されたルートとして証明書をインポートするには、次のコードを使用していますC++

#include "stdafx.h" 
#include "windows.h" 
#include "Cryptuiapi.h" 

#pragma comment(lib, "Cryptui.lib") 

int _tmain(int argc, _TCHAR* argv[]){ 
    CRYPTUI_WIZ_IMPORT_SRC_INFO importSrc;  
    memset(&importSrc, 0, sizeof(CRYPTUI_WIZ_IMPORT_SRC_INFO));  
    importSrc.dwSize = sizeof(CRYPTUI_WIZ_IMPORT_SRC_INFO);  
    importSrc.dwSubjectChoice = CRYPTUI_WIZ_IMPORT_SUBJECT_FILE;  
    importSrc.pwszFileName = L“C:\\PathToCert\\MyCertificate.cer”; 
    importSrc.pwszPassword = L"";  
    importSrc.dwFlags = CRYPT_EXPORTABLE | CRYPT_USER_PROTECTED;    
    if (CryptUIWizImport( 
     CRYPTUI_WIZ_NO_UI,  
     NULL,  
     NULL,  
     &importSrc,  
     NULL  
    ) == 0)  
    {  
     printf(“CryptUIWizImport error 0x%x\n”, GetLastError());  
    } 
    return 0; 
} 

しかし、このアプローチはIntermediate Certificate Authoritiesとしての私の証明書をインポートTrusted Root Certificate Authoritiesとしてインポートします。ウィザードのアプローチを使用したくないので、証明書を変更することはできません。

この証明書を信頼できるルートとしてインポートすることはできますか。

CryptUIWizImportには、証明書の種類を信頼できるルートとして設定するプロパティはありますか?進歩

答えて

0

おかげで私たちは、C++コード内からバッチファイルコマンドを実行する必要があります。certificateファイルはexeファイルの隣に置かれるべきであること

#include "stdafx.h"; 
#include "windows.h" 
#include "Cryptuiapi.h" 
#include <iostream> 
#include <string> 
using namespace std; 

#pragma comment(lib,"Cryptui.lib") 

int _tmain(int argc, _TCHAR* argv[]) 
{ 

    char buffer[MAX_PATH]; 
    GetModuleFileNameA(NULL, buffer, MAX_PATH); 
    string::size_type pos = string(buffer).find_last_of("\\/"); 
    string myPath = string(buffer).substr(0,pos);  
    string myCommand = "certutil -addstore -f -enterprise -user root \""+myPath+"\\IRIPO CA.cer\""; 
    system(myCommand.c_str()); 
    return 0; 
} 

注意。