这
var psi = new ProcessStartInfo("cmd")
{
Verb = "runas",
UseShellExecute = true,
Arguments = "/user:domain\\username"
};
var ps = Process.Start(psi);
不会使用给定的凭据启动命令行窗口,也不会要求输入密码。我想知道如何正确使用它。
我被告知,不应该使用StartInfo.UserName,Domain和Password方法,因为它不安全。
答案 0 :(得分:0)
我不会说使用这种内置的.NET功能是不安全的:只是不要保存明文密码,你就可以了。只需像.NET要求的那样为ProcessStartInfo
提供所有非关键属性,然后向用户提供密码:
var psi = new ProcessStartInfo("cmd")
{
UseShellExecute = true,
UserName = "username",
Domain = "domain"
};
SecureString password = new SecureString();
Console.WriteLine("Please type in the password for 'username':");
var readLine = Console.ReadLine(); // this should be masked in some way.. ;)
if (readLine != null)
{
foreach (var character in readLine)
{
password.AppendChar(character);
}
psi.Password = password;
}
var ps = Process.Start(psi);
但是,正如我的评论所述,您应该以某种方式掩盖密码承诺。有关如何实现此目的的示例,请参阅Password masking console application ...