У меня есть программа, которая подключается к сетевому диску от имени другого пользователя, предоставляя имя пользователя и пароль в виде простого текста в качестве аргументов.
Теперь я обеспокоен тем, что предоставление пароля в виде простого текста - это небезопасный способ обработки данных, и я ищу способ предоставить пароль безопасным способом.
Я думал, что простым решением было бы запустить net.exe как процесс и просто ввести вместо него пароль. Но, к сожалению, у меня это не сработало.
Вот то, что у меня сейчас есть, оно работает, но с использованием простого текстового пароля.
Process proc = new Process();
proc.StartInfo.FileName = "net.exe";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.Arguments = $@"use \\{hostName} /user:{DomainName}\{UserName} {LoginCredentials.Decrypt(Credentials.EncryptedPassword)} /persistent:no";
proc.Start();
proc.WaitForExit();
string remoteDirectory = $@"\\{hostName}\{path}";
if (System.IO.Directory.Exists(remoteDirectory))
{
Process.Start("explorer.exe", remoteDirectory);
}
else
{
StatusInfoController.Error($"Failed to connect to {path} on host {hostName}. Missing permissions?");
}
Этот код работает нормально. Я просто хотел, чтобы не указывать пароль в виде обычного текста.
Я попытался дать пароль процессу, например, так:
proc.StartInfo.Domain = MainUI.CaaCredentials.DomainNameShort;
proc.StartInfo.UserName = MainUI.CaaCredentials.UserName;
proc.StartInfo.Password = MainUI.CaaCredentials.SecurePassword;
Любая помощь очень ценится. Спасибо!