如何通过ProcessStartInfo使用sudo启动进程?

Mon*_*Mon 5 c# mono debian processstartinfo

我在Debian中有一个需要root特权的程序,而myuser必须运行它,但是我必须从以单声道运行的.NET应用程序(C#)进行调用。在/ etc / sudoers中,添加以下行:

myuser ALL = NOPASSWD: /myprogram
Run Code Online (Sandbox Code Playgroud)

因此sudo ./myprogram适用于myuser。

在。我在代码中使用的.NET

string fileName = "/myprogram";
ProcessStartInfo info = new ProcessStartInfo (fileName);
...
Run Code Online (Sandbox Code Playgroud)

如何调用“ sudo fileName”?到那时还行不通...谢谢你,莫妮克。

Ste*_*man 6

以下内容在类似的情况下为我工作,并演示了传递多个参数的情况:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)


jar*_*riq 2

您只需将程序作为参数传递给 sudo 命令,如下所示:

ProcessStartInfo info = new ProcessStartInfo("sudo", "/myprogram");
Process.Start(info);
Run Code Online (Sandbox Code Playgroud)