首页 > 解决方案 > 如何设置 Windows 执行级别以向用户询问 Rust 程序的管理员权限?

问题描述

我正在编写一个 Windows CLI 应用程序,我需要以管理员身份运行它。在 C# 中,我会将这一行添加到 app.manifest:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 

我如何在 Rust 中做到这一点?

标签: windowsrust

解决方案


为时已晚,但还是回答了。:-)

请看看winres图书馆。它包含以下示例:

以下清单将 exe 标记为请求管理员权限。因此,每次执行时,都会出现一个 Windows UAC 对话框。

let mut res = winres::WindowsResource::new();
res.set_manifest(r#"
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
        </requestedPrivileges>
    </security>
</trustInfo>
</assembly>
"#);

完整示例已记录在案并可在此处获得。

我一直在一个包含图标并需要管理员权限的项目中使用这个库,它的build.rs使用winres托管在这里。查看生成的可执行文件:在此处输入图像描述

高温高压


推荐阅读