Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果应用程序使用不同的用户凭据启动,CertFindCertificateInstance无法找到证书_C++_Security_Certificate - Fatal编程技术网

C++ 如果应用程序使用不同的用户凭据启动,CertFindCertificateInstance无法找到证书

C++ 如果应用程序使用不同的用户凭据启动,CertFindCertificateInstance无法找到证书,c++,security,certificate,C++,Security,Certificate,我的windows用户证书->个人文件夹中有证书,其CA位于受信任的根文件夹中 我有一个windows服务应用程序,它尝试使用CertFindCertificateInstance()API获取证书 如果我使用当前登录windows用户凭据运行该服务,则工作正常 我创建了一个本地用户(比如TEST)并将其添加到管理员组。 还添加到LocayPolicys->User Rights Management->“替换流程级别tocken”和“作为服务策略上的徽标” 我使用测试用户凭据启动了服务。服务已

我的windows用户证书->个人文件夹中有证书,其CA位于受信任的根文件夹中

我有一个windows服务应用程序,它尝试使用CertFindCertificateInstance()API获取证书

如果我使用当前登录windows用户凭据运行该服务,则工作正常

我创建了一个本地用户(比如TEST)并将其添加到管理员组。 还添加到LocayPolicys->User Rights Management->“替换流程级别tocken”和“作为服务策略上的徽标”

我使用测试用户凭据启动了服务。服务已启动。 但是相同的代码CertFindCertificateInStore()API找不到证书,API返回NULL


我将感谢你的帮助

我找到了根本原因。当前用户的人员证书对其他用户不可用。我将证书导入本地计算机,并使用下面更新的代码来解决问题

HCERTSTORE hMy = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, NULL, CERT_SYSTEM_STORE_LOCAL_MACHINE, L"MY");
HCERTSTORE hMy = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, NULL, CERT_SYSTEM_STORE_LOCAL_MACHINE, L"MY");