#sudo #command #dialog #user #applications #necessary #cross-platform

elevated-command

使用 sudo 运行命令,如必要,则通过操作系统对话框提示用户

4 个稳定版本

1.1.2 2024年1月4日
1.1.1 2024年1月3日
1.1.0 2024年1月2日
1.0.0 2024年1月2日

#6 in #necessary

Download history 30/week @ 2024-04-09 22/week @ 2024-04-16 17/week @ 2024-04-23 28/week @ 2024-04-30 8/week @ 2024-05-07 1/week @ 2024-05-14 13/week @ 2024-05-21 24/week @ 2024-05-28 21/week @ 2024-06-04 56/week @ 2024-06-11 139/week @ 2024-06-18 95/week @ 2024-06-25 111/week @ 2024-07-02 177/week @ 2024-07-09 165/week @ 2024-07-16 266/week @ 2024-07-23

747 每月下载量

MIT 许可证

35KB
278 代码行

elevated-command

crates.io docs.rs

使用 sudo 运行命令,如必要,则通过图形化操作系统对话框提示用户。适用于需要 sudo 的后台 Rust 应用或原生 Tauri 应用。

跨平台

elevated-commandWindowsLinuxMacOS 上提供原生操作系统对话框提示。

Windows

Linux

macOS

示例

将以下内容添加到您的 Cargo.toml 中

[dependencies]
elevated-command = "1.1"

在您的 main.rs

use elevated_command::Command;
use std::process::Command as StdCommand;

fn main() {
    let is_elevated = Command::is_elevated();

    let mut cmd = StdCommand::new("path to the application");
    cmd.arg("some arg");

    let output = if is_elevated {
        cmd.output().unwrap()
    } else {
        let elevated_cmd = Command::new(cmd);
        elevated_cmd.output().unwrap()
    };
}

注意:应用不应以 sudo 运行。

要开始使用 elevated-command,请参阅 API 参考 (docs.rs)

行为

在 Windows 上,elevated-command 将使用用户账户控制 (UAC) 提升您的命令。

在 Linux 上,elevated-command 将使用 pkexec 显示密码提示并运行您的命令。

在 MacOS 上,elevated-command 的行为应与 shell 中的 sudo 命令类似。

参考

  1. jorangreef/sudo-prompt
  2. https://stackoverflow.com/questions/8046097/how-to-check-if-a-process-has-the-administrative-rights/8196291#8196291
  3. https://fix.moe/post/macos-app-authorization

许可证

MIT 许可证下发布。

依赖项

~0.1–36MB
~527K SLoC