2012-09-20 5 views
-1

가능한 중복 :
Process.Start() impersonation problemC# 실행 콘솔 응용 프로그램으로 다른 사용자 ... 가장

나는 C#에서 다른 사용자로 콘솔 응용 프로그램을 실행하려고하지만, 내가 문제가있다. 여기에 내 코드의 일부입니다

public void encryptPGP(string fileName) 
{ 
    string sCommandLine = "" + 
       "--recipient \"User Name <[email protected]>\" --encrypt \"" + fileName + "\""; 

    System.Diagnostics.Process.Start("C:\\Utilities\\GnuPG\\App\\gpg.exe", sCommandLine); 
} 

... 나는 C가 필요 : \ 유틸리티 \ GnuPG는 \ 응용 프로그램 \의 gpg.exe 특정 사용자가 달렸다. 어떻게 추가할까요?

웹 응용 프로그램에서 사용됩니다.

감사합니다.

답변

1

System.Diagnostics.ProcessStartInfo 클래스를 사용하면 프로세스를 시작하려는 사용자 자격 증명을 제공 할 수 있습니다. 아래 샘플 코드를 참조하십시오.

string userPwd = "secretPassword"; 
System.Security.SecureString pwd = new System.Security.SecureString(); 
foreach (char c in userPwd.ToCharArray()) 
{ 
    pwd.AppendChar(c); 
} 

System.Diagnostics.ProcessStartInfo inf = new System.Diagnostics.ProcessStartInfo(); 
inf.FileName="path to file"; 
inf.Domain = "domainname"; 
inf.UserName = "desired_user_name"; 
inf.Password = pwd; 

System.Diagnostics.Process.Start(inf); 

개인적으로이 솔루션을 테스트하지는 않았지만 프레임 워크 2.0 이상을 사용해야합니다.

희망이 있으면 도움이됩니다.

관련 문제