2016-10-27 14 views
3



프로세스는 주어진 자격 증명을 사용하여 명령 행 창을 시작하지 않습니다 인수

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 기능을 내장하여 사용하는 것이 안전하지 않다고 말하는 것이 아닙니다. 일반 텍스트 비밀번호를 저장하지 마십시오. 그냥 .NET은 당신이 원하는대로 당신의 ProcessStartInfo에 모든 중요하지 않은 특성을 제공하고 사용자에게 암호 PROMT : 내 댓글 상태로, 그러나

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); 

을, 당신의 암호 PROMT 마스크한다 어떤 방법으로. 이것을 달성하는 방법에 대한 예제는 Password masking console application을 참조하십시오 ...