[英]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.