如何使用ProcessStartInfo启动sudo进程?

时间:2014-04-01 16:01:46

标签: c# mono debian processstartinfo

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

myuser ALL = NOPASSWD: /myprogram

所以sudo ./myprogram适用于myuser。

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

string fileName = "/myprogram";
ProcessStartInfo info = new ProcessStartInfo (fileName);
...

如何拨打电话" sudo fileName"?它暂时不起作用...... 谢谢你,莫妮克。

2 个答案:

答案 0 :(得分:5)

在类似情况下,以下内容适用于我,并演示了传递多个参数:

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

答案 1 :(得分:1)

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

ProcessStartInfo info = new ProcessStartInfo("sudo", "/myprogram");
Process.Start(info);