|
0
YFedor
06.07.26
✎
11:56
|
Хочу скриптом удалить их личного хранилища пользователя просроченные сертификаты.
Без использования powershell.
Подскажите как сделать.
Перебрал уже разные объекты коллекций сертификатов - все не поддерживают метод удаления ...
' Текущее время и граница поиска
Today = Date
' Открываем хранилище (пример: текущее пользовательское хранилище «MY»)
Set Store = CreateObject("CAPICOM.Store")
Store.Open
Set Certificates = Store.Certificates
Set CertExpired = CreateObject("Scripting.Dictionary")
' Перебираем все сертификаты в хранилище
For Each Cert In Certificates
' Проверяем, не истёк ли сертификат
If Cert.ValidToDate < Today Then
' Сертификат истек - нужно удалить
WScript.Echo Cert.SubjectName & " " & Cert.ValidToDate
certExpired.Add Cert, Cert.ValidToDate
End If
Next
' Перебираем все сертификаты в коллекции на удаление
'For Each Cert In CertExpired
Certificates.Remove(Cert)
'Next
' Закрываем хранилище
Set Store = Nothing
На строке "Certificates.Remove(Cert)" - ошибка: объект не поддерживает указанный метод
|
|
|
5
YFedor
06.07.26
✎
16:03
|
Пока получилось так:
Set WSHShell = CreateObject("WScript.Shell")
Set Store = CreateObject("CAPICOM.Store")
'Загрузим все сертификаты с диска
cmdLine_ = """c:\Program Files\Crypto Pro\CSP\csptest.exe"" -absorb -certs -silent"
WSHShell.Run cmdLine_, 2, true
' Текущее время и граница поиска
Today = Date
' Открываем хранилище (пример: текущее пользовательское хранилище «MY»)
Store.Open 2, "MY", 1
Set Certificates = Store.Certificates
Set CertExpired = CreateObject("Scripting.Dictionary")
' Перебираем все сертификаты в хранилище
For Each Cert In Certificates
' Проверяем, не истёк ли сертификат
If Cert.ValidToDate < Today Then
' Сертификат истек - нужно удалить
certExpired.Add Cert.Thumbprint, Cert.Thumbprint
End If
Next
' Перебираем все сертификаты в коллекции на удаление
For Each Cert In CertExpired
cmdLine_ = """c:\Program Files\Crypto Pro\CSP\certmgr.exe"" -delete -thumbprint " & Cert
WSHShell.Run cmdLine_, 2, true
Next
' Закрываем хранилище
Set Store = Nothing
Set WSHShell = Nothing
Работает
|
|