我尝试使用ctypes从Python中使用microsoftsicertadmin2接口。在
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383234(v=vs.85).aspx
到目前为止,我可以加载证书adm.dll. e、 g
import ctypes
# Load DLL into memory.
dll = ctypes.WinDLL ("c:\\windows\\system32\\Certadm.dll")
但是,我不确定我现在需要做什么来从ICertAdmin2中访问方法,例如。 ICertAdmin2::ImportKey。在
任何指导都将不胜感激。在
更新
现在使用Python的“comtypes”库。这就是我想要的。在
^{pr2}$更新3
现在看来这是可行的:
>>import comtypes
>>from comtypes.client import CreateObject
>>out = comtypes.BSTR('')
>>certadmin = CreateObject("CertificateAuthority.Admin")
>>certadmin._ICertAdmin2__com_GetArchivedKey('ca1\\simpleca', 51, 1 , out)
>>print out
BSTR(u'MIIiHwYJKoZIhvcNAQcCoIIiEDC...........
然而,这:
>>import comtypes
>>from comtypes.client import CreateObject
>>out = comtypes.c_long()
>>request = CreateObject("CertificateAuthority.Request")
>>request._ICertRequest2__com_GetIssuedCertificate('ca1\\simpleca', 1, u'-1', out )
>>print out
COMError: (-2147024809, 'The parameter is incorrect.', (u'CCertRequest::GetIssuedCertificate: The parameter is incorrect. 0x80070057 (WIN32: 87)', u'CertificateAuthority.Request', None, 0, None))
GetIssuedCertificate
的最后一个参数是指向LONG的指针。使用byref()
传递它。 您还应该传递BSTR作为第一个和第三个参数。在相关问题 更多 >
编程相关推荐