如果使用不同的用户凭据启动该应用程序,则CERTFINDCERTIFIFIFICATESTORE将无法找到证书

CertFindCertificateInStore fails to find certificate if the application launched with different user credentials

本文关键字:CERTFINDCERTIFIFIFICATESTORE 证书 应用程序 用户 启动 如果      更新时间:2023-10-16

我的Windows用户证书中有证书 ->个人文件夹及其CA中的CA中的CA。

我有一个Windows Service应用程序,该应用程序试图使用certfindcertificateinstore()API。

获得证书
HCERTSTORE hMy = CertOpenSystemStore(0, _T("MY"));
CString cert = _T("1.2.3.4");
PCCERT_CONTEXT context =  CertFindCertificateInStore( hMy, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0, CERT_FIND_SUBJECT_STR, cert ,    NULL ); 

如果我在Windows用户凭据中运行当前登录的服务,则可以正常工作。

我创建了一个本地用户(例如测试)并添加到管理员组中。还添加到locaypolicies->用户权限管理 ->"替换流程级别的托克"answers"徽标为服务策略"。

我从测试用户凭据开始服务。该服务开始了。但是相同的代码,certFindCertificateInstore()API未能找到证书,API返回null。

我将感谢您的帮助!

我找到了根本原因。其他用户无法获得Current_user的人员证书。我将证书导入本地机器,并在以下更新的代码中使用了问题。

HCERTSTORE hMy = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, NULL, CERT_SYSTEM_STORE_LOCAL_MACHINE, L"MY");
相关文章:
  • 没有找到相关文章