2014-04-01 2 views
3

데비안에 루트 권한이 필요하고 myuser가이를 실행해야하는 프로그램이 있지만 모노로 실행되는 .NET 응용 프로그램 (C#)에서 호출해야합니다. 참고 MyUser에 대한ProcessStartInfo가 sudo를 사용하여 프로세스를 시작하는 방법은 무엇입니까?

myuser ALL = NOPASSWD: /myprogram 

그래서 sudo ./myprogram 작품 : 에서의/etc /의 sudoers, 나는 줄을 추가해야합니다.

. NET 내 코드에서 사용합니다.

어떻게 "sudo fileName"을 호출 할 수 있습니까? 그것은 시간에 의해 작동하지 않습니다 ... 감사합니다, 모니크.

답변

1

당신은이 같은 Sudo 명령에 대한 인수로 프로그램을 전달해야

(가) 비슷한 상황에 나를 위해 일한 다음, 여러 인수를 전달하는 방법을 보여줍니다
ProcessStartInfo info = new ProcessStartInfo("sudo", "/myprogram"); 
Process.Start(info); 
4

:

var psi = new ProcessStartInfo 
{ 
    FileName = "/bin/bash", 
    UseShellExecute = false, 
    RedirectStandardOutput = true, 
    Arguments = string.Format("-c \"sudo {0} {1} {2}\"", "/path/to/script", "arg1", arg2) 
}; 

using (var p = Process.Start(psi)) 
{ 
    if (p != null) 
    { 
     var strOutput = p.StandardOutput.ReadToEnd(); 
     p.WaitForExit(); 
    } 
} 
+0

stdout을 캡처하는 훌륭한 방법입니다. 'RedirectStandardOutput = true'는 Jariq의 대답과 작동하지 않습니다. – Dunc

관련 문제