【问题标题】:How to Get and Change Windows Credential Username and Password如何获取和更改 Windows 凭据用户名和密码
【发布时间】:2017-03-08 20:46:46
【问题描述】:

我想使用 WMI 在 C# 中编写一个应用程序,它可以获取和更改存储在 Windows 凭据管理器中的 Windows 凭据,如下图所示:

【问题讨论】:

    标签: c# windows credentials


    【解决方案1】:

    Ookii.Dialogs 包含一个凭据对话框,可根据需要调用CredUIPromptForCredentialsCredUIPromptForWindowsCredentials

    编辑:Credentials API 在http://msdn.microsoft.com/en-us/library/aa374731%28v=VS.85%29.aspx#credentials_management_ui_functions 中有详细说明 - 但从托管代码实现可能会很棘手。在 CredUIPromptForWindowsCredentials 之后,您将调用 CredWrite 来保存凭据。

    【讨论】:

    • 据我了解,任何这些都只是让用户使用他们的凭据登录。我可能错了,但我不相信该 api 中有任何东西可以更改凭据。
    • @Andy 这与登录无关。这是关于将凭据存储在 Windows 7 保险库中。
    【解决方案2】:

    编辑:由于图片不可见,因此误解了原始问题。

    我不确定你是否可以通过 WMI 做你想做的事。但是,我认为使用DPAPI 可能是可能的,但它的文档似乎并不容易。但是,有一个名为 NCrypto 的开源项目有一个名为 UICredentialsHelper 的类,它可能会告诉你如何去做,或者至少是如何开始。

    【讨论】:

      【解决方案3】:

      没有用于获取用户密码的 Windows API。密码不存储在 Windows 中。相反,Windows 存储单向哈希版本。

      您可以使用 WindowsIdentity.GetCurrent() 获取用户名。或者,您可以通过 Environment.UserName 属性获取登录的用户名。

      虽然要更改凭据.....祝你好运:) 那是我最好的答案。我不认为微软会给我们这样做的能力。

      【讨论】:

      • -1 : 发帖者谈论的是用于存储用户名和密码的 Windows 凭据管理器。它不存储哈希值,而是存储机器加密的密码,因此可以解密。
      【解决方案4】:

      [void]Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime] (新对象 Windows.Security.Credentials.PasswordVault).RetrieveAll() | % { $.RetrievePassword(); $ }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-12
        • 2015-01-07
        相关资源
        最近更新 更多