2016-10-27 6 views
3


Это
процесса с глагольным = «RunAs» не запускается с учетными данными, определенными в Аргументах

var psi = new ProcessStartInfo("cmd") 
      { 
       Verb = "runas", 
       UseShellExecute = true, 
       Arguments = "/user:domain\\username" 
      }; 
     var ps = Process.Start(psi); 

не запускается окна командной строки с заданными учетными данными и не запрашивает пароль. Я хотел бы знать, как правильно использовать его.

Мне сказали, что не следует использовать метод StartInfo.UserName, Domain и Password, потому что это небезопасно.

+0

Что именно небезопасно? – nozzleman

+0

«Пожалуйста, не сохраняйте пароли в своем исходном коде!» Поэтому мне сказали. – Nash

+0

не нужно его сохранять, вы можете проголосовать за него самостоятельно и передать его в свой 'ProcessStartInfo', прежде чем начинать его;) – nozzleman

ответ

0

Я бы не сказал, что использовать такую ​​встроенную .NET-функцию небезопасно: просто не сохраняйте пароли открытого текста, и вам хорошо идти. Просто предоставьте все некритические свойства вашей ProcessStartInfo как .NET хочет, чтобы вы, а затем ПРОМТ пользователя для пароля:

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 для примера о том, как достичь этого ...