在Windows上为所有用户从证书管理器中删除条目

问题描述:

我目前正在为Windows卸载程序中的所有用户实施“删除设置”,并且遇到了一个我甚至不能确定可以解决的问题。在Windows上为所有用户从证书管理器中删除条目

应用程序使用CredentialManager(keymgr.dll)存储当前用户的凭证条目。我们称之为凭证“X”的目标。在卸载所有用目标“X”存储的凭证时,应该在所有用户上删除。卸载程序当然需要管理员权限,但我仍然很难完成这项任务。

对于当前用户,通常通过命令提示符通过cmdkey /delete=:X解决该命令。据我所知cmdkey.exe /list只有帮助列出当前用户的条目,并不能从其他用户删除本地条目。

我已经了解到,凭证作为操作系统文件存储在C:\Users\_user_\AppData\Local\Microsoft\Credentials文件夹下,但我不知道哪些文件是我想要删除的条目,删除所有条目对于其他应用程序都是危险的。另外我还假定移除操作系统文件将是危险的,并且可能会有局限性(额外的UAC提示?)。

Runas命令是我得到的最接近的镜头,但因为它需要用户的密码,所以它变得非常困难,而不是我想要的卸载程序。我也需要一种方法来获取每个用户的用户名和域名并对它们进行迭代。

我宁愿为此使用cmdpowershell

+0

嗨,已经做了一些研究关于这个自己后,我认为如果您没有以拥有凭据的用户身份运行,您想实现的目标是不可能的。最多可以删除*全部*存储的凭证... – sodawillow

不想死灵旧的文章,但我需要做自己,所以我想我会添加此万一别人需要它:

cmdkey /list | ForEach-Object{if($_ -like "*Target:*" -and $_ -like "*microsoft*"){cmdkey /del:($_ -replace " ","" -replace "Target:","")}} 

Powershell的一个衬垫,将删除任何凭据与微软在字符串。

参考: https://gist.github.com/janikvonrotz/7819990

我跑了这一点,并在本地清除它,而无需为管理员身份运行(但我是一个本地管理员)