网上都是通过request请求来申请及安装,xp下采用xenroll的installPKCS7函数已经实现安装本地证书。但是在win7下接口改变,查了资料,certenroll中IX509EnrollMent的installresponse来实现,但采用编写以下代码安装本地已手动下载的证书文件时调用installresponse函数后报0x8007007a 错误。 与没发现那里要初始化一个区域大小。请高手指教BSTR bCertBuffer=bStringToBSTR(pCertBuffer,sizeof(pCertBuffer));IX509Enrollment* pEnroll = NULL;
HRESULT hr = S_OK;hr=CoCreateInstance( 
__uuidof(CX509Enrollment), 
NULL, 
CLSCTX_INPROC_SERVER, 
__uuidof(IX509Enrollment), 
(void**)&pEnroll); 
......
hr=pEnroll->Initialize(ContextUser);
        hr=pEnroll->InstallResponse(AllowUntrustedRoot,bCertBuffer,XCN_CRYPT_STRING_BASE64_ANY,NULL);

解决方案 »

  1.   

    sizeof(pCertBuffer)当然是错误的,pCertBuffer是个指针吧,sizeof的结果就是4,那当然不够了。
      

  2.   

    返回的结果在vc2008编译器中 我看了是一长串的内容,不是单4个字节。问题我已经解决了installresponse第二个参数需要编码转换为DER格式 就可以了。但是默认都装到了中级认证颁发机构中。
    没有到受信任根中,貌似我搜了资料,win7没有提供指定安装目录的函数。
      

  3.   

    请问楼主,怎么把installresponse第二个参数编码转换为DER格式啊?遇到类似的问题,无解ing……