如何使用Ansible脚本为Windows系统下的.exe文件设置“Run as administrator”标记
给.exe设置「以管理员身份运行」标记的Ansible解决方案
我懂你要的不是Ansible自带的become机制——那是用来提升playbook任务自身的运行权限,而你需要的是给目标.exe文件本身打上「以管理员身份运行」的兼容性标记,让用户双击它时自动触发UAC提示。
Windows里这个设置是存在注册表中的,我们可以用Ansible的win_regedit模块来修改,具体实现如下:
针对当前用户生效的任务
- name: Configure target.exe to run as administrator (current user only) win_regedit: path: HKCU:\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers name: 'C:\full\path\to\your\target.exe' value: 'RUNASADMIN' type: string state: present
针对所有用户生效的任务(需要管理员权限)
如果要让所有用户打开这个exe都默认以管理员身份运行,需要修改HKLM路径,同时要确保Ansible任务本身以管理员权限执行:
- name: Configure target.exe to run as administrator (all users) win_regedit: path: HKLM:\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers name: 'C:\full\path\to\your\target.exe' value: 'RUNASADMIN' type: string state: present become: yes become_method: runas become_user: Administrator
关键说明
- 必须使用exe的绝对路径,路径里的反斜杠可以用单引号包裹避免转义问题
- 如果要移除这个标记,只需把
state改为absent即可 - 修改HKLM路径时,Ansible需要有管理员权限,所以要配合
become相关参数(这时候的become是用来提升任务执行权限,和你一开始提到的需求不冲突)
内容的提问来源于stack exchange,提问作者Marc Giroux
相关产品推荐
相关产品推荐

