2015-05-11 4 views
0

ниже код, что я использую, чтобы удалить сертификаты из текущего хранилища пользователей:Удалить текущий сертификат пользователя для всех пользователей

#Delete Certificates 
$certs = Get-ChildItem cert:\CurrentUser\My | where { $_.IssuerName.Name -like '*CN=Issuer*' } 
foreach ($cert in $certs) { 
    $store = Get-Item $cert.PSParentPath -Force 
    $store.Open('ReadWrite') 
    $store.Remove($cert) 
    $store.Close() 
} 

Я интересно, если есть способ изменить этот код, где он удалит этот сертификат во всех учетных записях пользователя на компьютере. Например, если я запустил его на User1, он удалит сертификат на User1 и User2. Я исследовал это, но не смог найти что-либо на нем относительно доступа к хранилищам сертификатов других пользователей. Любая помощь приветствуется. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

ответ

1

Это не что-то легко воспринимается, потому что хранилище сертификатов пользователя сохраняется в их кустах реестра. Это означает, что для доступа к хранилищу сертификатов пользователя, которые не вошли в систему, вы должны сначала загрузить свой куст реестра, а затем manually decode their certificate blobs один за другим, чтобы найти сертификат, который вы ищете. Это не рекомендуется.

Что может быть лучшим решением, так это установить сценарий для запуска, когда каждый пользователь входит в систему через групповую политику или некоторые из них.

+0

Это хорошая идея ... Мне это нравится. Спасибо за рекомендацию! – JLott

Смежные вопросы