以其他用户身份连接到网络驱动器,而无需提供纯文本密码

时间:2019-05-21 09:04:30

标签: c# .net security passwords net-use

我有一个程序,通过提供用户名和密码(以纯文本作为参数)来以其他用户身份连接到网络驱动器。

现在,我担心以纯文本形式提供密码是一种不安全的处理方式,我正在寻找一种以安全方式提供密码的方法。

我认为简单的解决方案是将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;

任何帮助将不胜感激。谢谢!

0 个答案:

没有答案