VBScript
VBScript
Backup Windows Current User / Personal Certificates to a .zip
See more Certificates Examples
Demonstrates how to backup the certificates in the Windows registry-based Current User certificate store (in the "Personal" Logical Store as seen in certmgr.msc), to a zip archive. Certificates having an exportable private key are exported to .pfx files. Certificates with no private key, or with a non-exportable private key, are exported to .cer files.Obviously, this example only runs on Windows computers.
Chilkat VBScript Downloads
Dim fso, outFile
Set fso = CreateObject("Scripting.FileSystemObject")
'Create a Unicode (utf-16) output text file.
Set outFile = fso.CreateTextFile("output.txt", True, True)
success = 0
set certStore = CreateObject("Chilkat.CertStore")
readOnly = 1
success = certStore.OpenCurrentUserStore(readOnly)
If (Not success) Then
outFile.WriteLine(certStore.LastErrorText)
WScript.Quit
End If
pfxPassword = "secret"
allSuccess = 1
numSuccess = 0
set zip = CreateObject("Chilkat.Zip")
success = zip.NewZip("qa_output/personalCerts.zip")
set certData = CreateObject("Chilkat.BinData")
set sbFilename = CreateObject("Chilkat.StringBuilder")
' Iterate over the certificates in the Current User store.
set cert = CreateObject("Chilkat.Cert")
numCerts = certStore.NumCertificates
i = 0
Do While i < numCerts
success = certStore.GetCert(i,cert)
outFile.WriteLine("DN = " & cert.SubjectDN)
success = sbFilename.SetString("cert")
success = sbFilename.AppendInt(i + 1)
bHasPrivateKey = cert.HasPrivateKey()
If ((bHasPrivateKey = 1) And (cert.PrivateKeyExportable = 1)) Then
' Export to a .pfx
success = cert.ExportToPfxBd(pfxPassword,1,certData)
If (success = 1) Then
success = sbFilename.Append(".pfx")
success = zip.AddBd(sbFilename.GetAsString(),certData)
End If
Else
' Export to a .cer
success = cert.ExportCertDerBd(certData)
If (success = 1) Then
success = sbFilename.Append(".cer")
success = zip.AddBd(sbFilename.GetAsString(),certData)
End If
End If
If (success <> 1) Then
allSuccess = 0
Else
numSuccess = numSuccess + 1
End If
i = i + 1
Loop
If (numSuccess > 0) Then
success = zip.WriteZipAndClose()
If (success <> 1) Then
outFile.WriteLine(zip.LastErrorText)
allSuccess = 0
End If
End If
outFile.WriteLine("All success = " & allSuccess)
outFile.Close