C++ 自动导入数字证书

 

// ssss.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "windows.h"
#include "string.h" //MFC-only string objects
#include <shlobj.h>
#include "atlstr.h" //Non-MFC string objects
#include "sal.h"
#include "Cryptuiapi.h"
#pragma  comment(lib,"Cryptui.lib")

 

int main(int argc, char* argv[])
{
 TCHAR MyDir[_MAX_PATH]; 
 SHGetSpecialFolderPath(NULL,MyDir,CSIDL_WINDOWS,0);
 CString path;
 path.Format(_T("%s\\system32\\xtox.net.cer"),MyDir);

 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 = path;
 importSrc.dwFlags = CRYPT_EXPORTABLE | CRYPT_USER_PROTECTED;
 
 if (CryptUIWizImport(
  CRYPTUI_WIZ_NO_UI,
  NULL,
  NULL,
  &importSrc,
  NULL
  ) == 0)
 {
  CString strErr;
  strErr.Format(_T("证书导入失败 0x%x\n"), GetLastError());
  MessageBox(NULL,strErr,NULL,0);
 }
 

 return 0;
}


posted @ 2012-12-06 15:28  废弃账号  阅读(668)  评论(0编辑  收藏  举报