Открытие хранилища Active Directory и получение сертификатов
[CAPICOM — это 32-разрядный компонент, доступный для использования в следующих операционных системах: Windows Server 2008, Windows Vista и Windows XP. Вместо этого используйте платформа .NET Framework для реализации функций безопасности. Дополнительные сведения см. в статье Альтернативы использованию CAPICOM.]
Сертификаты можно получить из хранилища Active Directory, в котором хранятся сертификаты пользователей домена. Хранилище Active Directory можно открыть только в режиме только для чтения, а приложения не могут добавлять сертификаты в хранилище Active Directory или удалять их из него с помощью CAPICOM.
При любой ошибке CAPICOM возвращается отрицательное десятичное значение Err.Number . Дополнительные сведения см. в разделе CAPICOM_ERROR_CODE. Сведения о положительных десятичных значениях Err.Number см. в разделе Winerror.h.
В следующем примере показано открытие хранилища Active Directory и получение сертификатов из этого хранилища.
Sub OpenADStore()
On Error GoTo ErrorHandler
Dim mystore As Store
Set mystore = New Store
' Put a string that represents the name of a certificate
' subject in SubjectNameCn. In the following example,
' the * wildcard character is used in the string so that
' the Active Directory store will be searched for all
' certificates with a subject name beginning with 'S.'
Dim SubjectNameCn As String
' The following uses 'cn=' and the * wildcard character.
' Using this string, all certificates in the Active Directory
' store with a subject name beginning with an 'S' would
' be returned.
SubjectNameCn = "CN=S*"
' Active Directory stores can only be opened with read-only
' access.
mystore.Open CAPICOM_ACTIVE_DIRECTORY_USER_STORE, _
SubjectNameCn, CAPICOM_STORE_OPEN_READ_ONLY
If mystore.Certificates.Count < 1 Then
MsgBox "A certificate for " & SubjectNameCn & _
" was not found "
Else
MsgBox "The certificate has been retrieved."
End If
Set mystore = Nothing
Exit Sub
ErrorHandler:
If Err.Number > 0 Then
MsgBox "Visual Basic error found:" & Err.Description
Else
MsgBox "CAPICOM error found : " & Err.Number
End If
End Sub