So speichern und laden Sie Anmeldedaten in Windows mit C #

8

Ich erstelle ein C # -Programm, das auf Win10 laufen soll. Ich möchte E-Mails von diesem Programm (Berechnungsergebnisse) per Knopfdruck senden. Ich habe die E-Mail-Adresse und den Betreff: etc. in C # -Eigenschaften eingefügt, aber ich möchte kein Klartext-Passwort irgendwo im Programm hinterlegen, UND ich möchte nicht, dass der Benutzer das Passwort eingeben muss für den Server jedes Mal, wenn eine Mail gesendet wird.

Kann das gemacht werden?

Wenn ja, wie (allgemein)?

Ich dachte daran, all diese E-Mail-Informationen einschließlich eines verschlüsselten Passworts für den Server in eine Datendatei zu schreiben, die beim Start des Programms gelesen werden kann.

Oder vielleicht hat Win10 eine Möglichkeit dafür ...

    
Erik 13.09.2015, 10:30
quelle

1 Antwort

14

Sie können die Windows-Anmeldeinformationsverwaltungs-API verwenden. Auf diese Weise werden Sie den Benutzer nur einmal nach dem Kennwort fragen und dann das Kennwort in Windows Credentials Manager speichern. Wenn Ihre App das nächste Mal gestartet wird und das Kennwort verwenden muss, wird es von Windows Credentials Manager gelesen. Sie können die Windows Credential Management API direkt mit pinvoke ( credwrite , CredRead , Beispiel hier ) oder wenn Sie einfach C # -Wrapper verwenden möchten, können Sie CredentialManagement überprüfen.

Beispielverwendung:

%Vor%

Ich empfehle nicht, Passwörter in Dateien auf Client-Rechnern zu speichern, selbst wenn Sie das Passwort verschlüsseln, werden Sie wahrscheinlich den Entschlüsselungsschlüssel in den Anwendungscode einbetten, was keine gute Idee ist.

    
Krzysztof Branicki 13.09.2015, 14:28
quelle