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

如何让PS2EXE生成的.exe在所有电脑上强制以管理员权限运行

解决PS2EXE生成的EXE强制要求管理员权限的问题

方法一:编译时嵌入管理员权限清单

PS2EXE支持通过参数直接将权限清单嵌入生成的EXE,这是最可靠的方式:

  1. 创建admin.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>
  1. 执行PS2EXE编译命令时添加-manifest参数:
.\ps2exe.ps1 -inputFile YourBitLockerPINScript.ps1 -outputFile BitLockerPINChanger.exe -noConsole -manifest .\admin.manifest

生成的EXE会内置权限要求,启动时直接触发UAC弹窗,无需依赖外部清单文件。

方法二:给已生成的EXE嵌入清单

如果已经完成编译,可使用Windows SDK中的mt.exe工具修改现有EXE:

  1. 确保mt.exe可用(通常位于C:\Program Files (x86)\Windows Kits\10\bin\<SDK版本>\<架构>目录,可将其加入系统PATH)
  2. 执行以下命令:
mt.exe -manifest admin.manifest -outputresource:BitLockerPINChanger.exe;#1

此命令会将清单嵌入EXE资源中,替换原有默认清单。

方法三:在PowerShell脚本中添加权限检查逻辑

如果无法重新编译,可在脚本开头加入自动提权代码,确保运行时拥有管理员权限:

# 检查当前进程是否拥有管理员权限
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
if (-not $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    # 以管理员权限重新启动当前程序
    Start-Process -FilePath $MyInvocation.MyCommand.Definition -Verb RunAs
    exit
}

# 后续的BitLocker PIN修改逻辑...

脚本转成EXE后,启动时若未获取管理员权限,会自动弹出UAC提示并重新启动带权限的实例。

为什么同目录清单无效?

PS2EXE生成的EXE默认会内置一个基础清单,优先级高于同目录下的同名外部清单(如BitLockerPINChanger.exe.manifest),因此单独放置外部清单不会生效,必须将清单嵌入EXE内部。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:22:55