|
|
Удаление сертификатов из личного хранилища пользователя скриптом
arsik, shuhard, YFedor, vicof, Timon1405, integer, leshikkam, kamysh, ads55, oleg_km, Prog_man, Мультук, Шаграм, Crusher, Fragster, Олдж, Dedal, Neo58, kir-g, bvb, phabeZ, fserg84, zenik, Сукпун, КонецЕсли, Builder, NorthWind, Михаил Козлов, okmail, GlRoznica
| ☑ |
|
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)" - ошибка: объект не поддерживает указанный метод
|
|
|
1
ads55
06.07.26
✎
12:01
|
|
|
|
2
YFedor
06.07.26
✎
12:59
|
(1) Так оно и есть - не работает же
|
|
|
3
shuhard
06.07.26
✎
13:07
|
(2) токены на ИИ закончились ?
|
|
|
4
YFedor
06.07.26
✎
13:23
|
(3) Так их и не было вовсе
|
|
|
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
Работает
|
|
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.