Ответ 1
Вы можете использовать API управления учетными данными Windows. Таким образом, вы попросите пользователя ввести пароль только один раз, а затем сохраните пароль в диспетчере учетных данных Windows.
В следующий раз, когда ваше приложение запустится и ему нужно будет использовать пароль, оно будет считывать его из диспетчера учетных данных Windows. Можно использовать API управления учетными данными Windows напрямую, используя pinvoke (credwrite, CredRead, пример здесь) или через обертку С# CredentialManagement.
Пример использования с помощью пакета Nuget CredentialManagement:
public class PasswordRepository
{
private const string PasswordName = "ServerPassword";
public void SavePassword(string password)
{
using (var cred = new Credential())
{
cred.Password = password;
cred.Target = PasswordName;
cred.Type = CredentialType.Generic;
cred.PersistanceType = PersistanceType.LocalComputer;
cred.Save();
}
}
public string GetPassword()
{
using (var cred = new Credential())
{
cred.Target = PasswordName;
cred.Load();
return cred.Password;
}
}
}
Я не рекомендую хранить пароли в файлах на клиентских компьютерах, даже если вы зашифруете пароль, вы, вероятно, вставите ключ дешифрования в код приложения, что не очень хорошая идея.