I'm looking for a way to get all system certificate stores, in any location (CurrentUser
or LocalMachine
).
The StoreLocation
enumeration clearly won't include user-defined certificate stores created with X509Store(String)
or X509Store(String, StoreLocation)
. Also this doesn't define other standard stores such as SPC
or Request
.
I've looked at the crypto32.dll
API and I couldn't see anything relevant in there apart from register/unregis开发者_StackOverflow社区ter.
Non file-system based stores appear in the registry (eg HKEY_CURRENT_USER\SOFTWARE\Microsoft\SystemCertificates\Root
). The PowerShell Certificate Provider can interrogate stores. Is this -- querying the registry -- what it's doing under the hood? Would such a hand-rolled solution be portable between XP/Vista/7/8?
Well, our SecureBlackbox product does what you need via CryptoAPI, namely CertEnumSystemStore() function. It has plenty of parameters, though.
精彩评论