You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose for Desktop:Windows下如何让exe以管理员身份启动?

让Jetpack Compose for Desktop应用自动以管理员身份启动

要实现启动exe时自动触发UAC提权,核心是给生成的Windows可执行文件添加UAC权限声明,具体步骤如下:

1. 创建自定义Windows Manifest文件

在项目的src/main/resources目录下新建一个名为app.manifest的文件,写入以下内容:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<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>

2. 在Gradle构建脚本中配置使用该Manifest

根据你使用的Gradle DSL类型,修改项目根目录的构建脚本:

Kotlin DSL 示例(build.gradle.kts)

compose.desktop {
    application {
        mainClass = "your.package.name.MainKt"

        nativeDistributions {
            targetFormats(TargetFormat.EXE, TargetFormat.MSI)
            packageName = "YourAppName"
            packageVersion = "1.0.0"

            windows {
                // 指定自定义manifest文件路径
                manifest.set(project.file("src/main/resources/app.manifest"))
                // 可选:配置应用图标
                // iconFile.set(project.file("src/main/resources/app.ico"))
            }
        }
    }
}

Groovy DSL 示例(build.gradle)

compose.desktop {
    application {
        mainClass = 'your.package.name.MainKt'

        nativeDistributions {
            targetFormats = [EXE, MSI]
            packageName = 'YourAppName'
            packageVersion = '1.0.0'

            windows {
                manifest = file('src/main/resources/app.manifest')
                // 可选:配置应用图标
                // iconFile = file('src/main/resources/app.ico')
            }
        }
    }
}

3. 打包测试

执行Gradle任务packageDesktop(或在IDEA的Gradle面板中找到Tasks/compose desktop/package),打包完成后,在build/compose/binaries/main/exe目录下找到生成的exe文件。双击启动时会自动弹出UAC权限请求窗口,确认后应用就会以管理员身份运行,此时内部调用的外部命令也会继承管理员权限。

注意:一旦配置了requireAdministrator,无管理员权限的普通用户将无法启动应用,需根据实际场景确认是否需要这种强提权方式。

内容的提问来源于stack exchange,提问作者Jeeva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 22:22:38