我有一个程序,通过提供用户名和密码(以纯文本作为参数)来以其他用户身份连接到网络驱动器。
现在,我担心以纯文本形式提供密码是一种不安全的处理方式,我正在寻找一种以安全方式提供密码的方法。
我认为简单的解决方案是将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;
任何帮助将不胜感激。谢谢!