繁体   English   中英

在 C# 如何从凭证管理器获取 Windows 凭证

[英]In C# How to get Windows Credentials from credential manager

他们在每个地方都在为获取用户提供答案......但我想从凭据管理器获取凭据? 我已经尝试了所有使用方法。,

1.System.Security.Principal.WindowsIdentity.GetCurrent().Name

**Output:** => "DESKTOP\\India"

这是提供域名而不是凭据管理器凭据。 2.我试过下面的代码..使用 nuget 中的凭证 package

var cm = new Credential();

cm.Target = "Here what i have to put????";

我对我必须在 cm.target="????" 中输入的内容有疑问 3.试过

Environment.UserName()

Output: "India"(This is not from credential manager credentials)

4.试过

System.Net.CredentialCache.DefaultCredentials()

Output:
{

`Username:'',`
password:''
}

在这里,我认为我们必须发送参数,这些也不是来自 windows 凭据管理器凭据。

我正在等待你们的帮助。任何帮助将不胜感激。

总之,凭证管理器下的Windows凭证只能获取用户名,不能获取密码。 这是由 Native 底层 API 决定的。 关于如何获取 Windows 凭证中的用户名,请参考以下链接。
https://github.com/AdysTech/CredentialManager
用法(target参数表示目标网络/互联网地址,即左侧的名称):

//get the username of "a" credential. username:b, password:123456
var result=CredentialManager.GetCredentials("a", CredentialManager.CredentialType.Windows);
            Console.WriteLine(result.UserName+": "+result.Password);

在此处输入图像描述
结果。
在此处输入图像描述
这是与此主题相关的讨论。
使用 C# 从 Windows 凭证存储中检索凭证
希望对你有用。

原始答案令人困惑。 似乎只能检索用户名,然后链接一个可以检索完整凭据的项目。 我知道这被标记为 ASP,但它也被标记为 C#。 我在 ASP 方面的经验很少,但代码隐藏的工作方式应该不会有任何不同(上面的答案对此一无所知)。

一段时间以来,我一直在使用PowerShell检索存储的凭据。 刚才,我需要一个 C# 解决方案(我不能在我的项目中使用那个 PS package)。

https://github.com/meziantou/Meziantou.Framework

没什么特别的,但我现在写这个是为了确认它有效。 StoredCredentialName通用凭据的“Internet 或网络地址”字段。

    Private Function GetCredentialFromStorage() As Net.NetworkCredential
        Try
            Dim c = Meziantou.Framework.Win32.CredentialManager.ReadCredential(StoredCredentialName)
            Return New Net.NetworkCredential(c.UserName, c.Password)
        Catch ex As Exception
            Return Nothing
        End Try
    End Function

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM