0

我是 stackoverflow 和 C# 的新手。我最近开始发布简单的 WinForm 应用程序,但我还有很长的路要走......

我编写了一个应用程序,它使用上述 nuget 包来删除本地存储的所有凭据。

我可以使用CredentialManager.RemoveCredentials()方法来删除Type: Generic credentials

但我无法删除通用证书域密码凭据类型。它抛出一个通用异常,表示无法删除凭据。正如我所说我是 c# 的新手,我错过了什么吗?

提前致谢

安杰洛

在此处输入图像描述

4

1 回答 1

0

我知道回答这个问题有点晚了,但仍然没有答案,所以想提供一个解决方案。

CredentialManager.RemoveCredentials()

如果您将凭据存储为 LocalMachine(cred1.Persistance = Persistance.LocalMachine;或者您在存储凭据时根本不提供 Persistance 属性)将不起作用,因为如果 Persistance 设置为 Enterprise,CredentialManager.RemoveCredentials() 将删除凭据。

因此,问题不在于您的删除逻辑,而在于创建逻辑。

使用以下代码创建凭据:

var cred1 = (new NetworkCredential("UserName", "PassWord")).ToICredential();
            cred1.TargetName = "TargetName";
            cred1.Attributes = new Dictionary<string, Object>();
            cred1.Persistance = Persistance.Enterprise;
            cred1.SaveCredential();

和删除只是使用下面:

CredentialManager.RemoveCredentials("TargetName");

如果它不起作用,请也发布您的创建逻辑,以便我验证。

于 2021-04-09T13:54:45.213 回答