Удаление сертификатов из личного хранилища пользователя скриптом 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
Работает
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой