【发布时间】:2020-07-21 22:14:21
【问题描述】:
我正在尝试访问存储在 Windows 本地机器存储中的证书。这不能用 wincertstore 完成,因为它使用 CertOpenSystemStoreA 函数(见备注:https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-certopensystemstorea)
但是来自 pywin32 的 CertOpenStore 可以访问,我只是不知道如何传递正确的参数。 这是我的代码:
import win32crypt
# store provider
CERT_STORE_PROV_SYSTEM = 13
#dwFlags
CERT_SYSTEM_STORE_CURRENT_SERVICE = 0x0100
CERT_SYSTEM_STORE_CURRENT_USER = 0x0200
CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY = 0x0400
CERT_SYSTEM_STORE_LOCAL_MACHINE = 0x0800
CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE = 0x1000
CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x2000
CERT_SYSTEM_STORE_SERVICES = 0x4000
CERT_SYSTEM_STORE_USERS = 0x8000
store = win32crypt.CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, None, CERT_SYSTEM_STORE_LOCAL_MACHINE, "MY")
for cert in store.CertEnumCertificatesInStore():
print("1 Cert: " + str(cert))
print("2 CertEnumCertificateContextProperties: " + str(cert.CertEnumCertificateContextProperties()))
print("3 cert.Subject: " + str(win32crypt.CertNameToStr(cert.Subject)))
运行时出现异常:(-2147024809, 'CertOpenStore', 'Wrong Parameter.')
pywin32 中 CertOpenStore 的文档:http://timgolden.me.uk/pywin32-docs/win32crypt__CertOpenStore_meth.html Windows 开发中心 CertOpenStore 文档:https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-certopenstore
【问题讨论】:
标签: python windows winapi certificate pywin32