如何通过 ProcessStartInformation 使用 sudo 启动进程

本文关键字:启动 进程 sudo 使用 何通过 ProcessStartInformation | 更新日期: 2023-09-27 17:56:03

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

myuser ALL = NOPASSWD: /myprogram

所以sudo ./myprogram适用于我的用户。

在。我在代码中使用的网络

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

如何调用"sudo 文件名"?到那时它不起作用...谢谢你,莫妮克。

如何通过 ProcessStartInformation 使用 sudo 启动进程

以下内容在类似情况下对我有用,并演示了传入多个参数:

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

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

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