將憑證新增至憑證Microsoft Store
[CAPICOM 是可用於下列作業系統的 32 位元件:Windows Server 2008、Windows Vista Windows XP。 請改用 .NET Framework 來實作安全性功能。 如需詳細資訊,請參閱 使用 CAPICOM 的替代方案。]
如果以讀取/寫入權限開啟存放區,則可以將憑證新增至憑證存放區或從憑證存放區中移除。 讀取/寫入權限不會授與 Active Directory 存放區。 雖然可以在記憶體存放區中新增或移除憑證,但不會在會話之間保存記憶體存放區中的變更。
您可以使用 Add 方法,將憑證新增至以讀取/寫入權限開啟的憑證存放區。 您可以使用 Remove 方法,從以讀取/寫入權限開啟的憑證存放區中移除憑證。 新商店可以建立並儲存在CAPICOM_CURRENT_USER_STORE和CAPICOM_LOCAL_MACHINE_STORE位置。 新建立的存放區可以透過讀取/寫入權限開啟其中一個位置。
在下列範例中,會開啟兩個憑證存放區。 從 Active Directory 存放區擷取名稱開頭為 F 的主體憑證。 CAPICOM_CURRENT_USER_STORE,CAPICOM_CA_STORE存放區接著會開啟為讀取/寫入存放區,並將 Active Directory 存放區中憑證集合中的第一個憑證新增至CAPICOM_CA_STORE中的憑證。
為了示範目的,此範例會顯示CAPICOM_MEMORY_STORE、CAPICOM_CURRENT_USER_STORE和CAPICOM_LOCAL_MACHINE_STORE位置中的商店開啟。 此範例示範如何從開啟的存放區匯出所有憑證、將匯出的憑證寫入檔案、讀取它們,以及將它們匯入至不同的存放區。 新匯入的憑證會列舉並顯示。
在任何 CAPICOM 錯誤上,會傳回 Err.Number 的負十進位值。 如需詳細資訊,請參閱 CAPICOM_ERROR_CODE。 如需 Err.Number的正十進位值相關資訊,請參閱 Winerror.h。
下列範例示範在宣告Microsoft Store物件和建立這些物件的實例中使用早期系結來開啟憑證存放區。
Sub AddCert()
On Error GoTo ErrorHandler
' The following shows two different ways to declare and
' create a store object.
Dim myADstore As New Store
Dim myCAstore As Store
Set myCAstore = New Store
' In this example, the Active Directory store will be searched for a
' certificate with a subject name that begins with the letter F.
' This is done by using the string "SN=F*" as the name of the store.
Dim SubjectNameSN As String
SubjectNameSN = "SN=F*"
' Active Directory stores can only be opened with read-only
' access.
myADstore.Open CAPICOM_ACTIVE_DIRECTORY_USER_STORE,
SubjectNameSN , CAPICOM_STORE_OPEN_READ_ONLY
' This example assumes that the store opened and that
' at least one certificate was returned.
' A complete application would ensure that at least one certificate
' was in the store before proceeding and would
' also select one or more of the certificates returned
' to be added instead of using the first certificate
' in the collection.
' Open the MY store so that a certificate can be added.
myCAstore.Open CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,
CAPICOM_STORE_OPEN_READ_WRITE
myCAstore.Add myADstore.certificates.Item(1)
' Release the two store objects.
Set myCAstore = Nothing
Set myADstore = 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