c # - Sådan hentes og ændres Windows Credential Brugernavn og Password

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil skrive en ansøgning i C # ved hjælp af WMI, der kan få og ændre Windows-legitimationsoplysninger gemt i Windows Credential Manager, som du ser på billedet nedenfor:


Windows Credential manager

Bedste reference


Ookii.Dialogs indeholder en credential dialog, som kalder CredUIPromptForCredentials eller CredUIPromptForWindowsCredentials efter behov. [2] [3] [4]


Rediger: API'en for legitimationsoplysninger er beskrevet på http://msdn.microsoft.com/en-us/library/aa374731\%28v=VS.85\%29.aspx#credentials\_management\_ui\_functions - men det kan være vanskeligt at implementere fra administreret kode. Efter CredUIPromptForWindowsCredentials vil du ringe CredWrite for at gemme legitimationsoplysningerne. [5] [6]

Andre referencer 1


Rediger: Misforstået det oprindelige spørgsmål, da billedet ikke var synligt.


Jeg er ikke sikker på, om du kan gøre hvad du vil via WMI. Men jeg tror, ​​det kan være muligt at bruge DPAPI, men dokumentationen for det ser ikke ud til at gøre det meget nemt. Der er dog et open source-projekt kaldet NCrypto, der har en klasse kaldet UICredentialsHelper, som kan vise dig hvordan man gør det, eller i det mindste hvordan man kommer i gang. [7] [8]

Andre referencer 2


Der er ikke Windows API til at få brugerens adgangskode. Adgangskoder gemmes ikke i Windows. I stedet lagrer Windows en envejs hashed-version.


Du kan få brugernavnet ved hjælp af WindowsIdentity.GetCurrent (). Alternativt kan du få det indloggede brugernavn via egenskaben Environment.UserName.


Selv om du ændrer legitimationsoplysninger ..... held og lykke :) Det er mit bedste svar på det. Jeg tror ikke, at Microsoft nogensinde ville give os mulighed for at gøre det.

Andre referencer 3


[[Void]] Windows.Security.Credentials.PasswordVault, Windows.Security.Credentials, Indholdstype=WindowsRuntime]]
(nyt objekt Windows.Security.Credentials.PasswordVault) .RetrieveAll () | \% {$ .RetrievePassword (); $ }