最近用JAVA写了一个SWING的小程序,需要修改本地的Hosts文件,因为Hosts文件属于系统文件,只有管理员权限才可写,而我用EXE4J打包的exe程序是不会自动请求管理员权限的,也就是WIN7之后的系统UAC。而java中并没有Visual Studio打包时的UAC执行级别参数设置,如下图
这时候就要用到Resource Hacker这个工具来对打包好的EXE文件进行修改
下载地址:
链接: http://pan.baidu.com/s/1sk3TVaP 密码: hpgh
一、打开下载好的Resource Hacker软件
二、将需要修改的EXE文件拖入Resource Hacker界面内打开,然后打开左侧菜单的清单选项
三、在左侧的编辑区内找到下图中蓝色部分,也就是requestedExecutionLevel标签
EXE4J打包的exe文件中,level属性值应该默认是asInvoker,是不会请求管理员权限的
四、将level属性的值改成 level=”requireAdministrator” 修改完成后一定要点击开始按钮进行编译,修改才能生效
如下图:
五、编译完成后直接点击关闭Resource Hacker界面 ,弹出提示框,选择是,并覆盖保存之前的EXE文件
六、最后,右键刷新一下,看看原来的EXE文件上是不是多了一个UAC小盾牌!
有的话说明修改成功!