最近用JAVA写了一个SWING的小程序,需要修改本地的Hosts文件,因为Hosts文件属于系统文件,只有管理员权限才可写,而我用EXE4J打包的exe程序是不会自动请求管理员权限的,也就是WIN7之后的系统UAC。而java中并没有Visual Studio打包时的UAC执行级别参数设置,如下图:

Visual Studio UAC设置

Visual Studio UAC设置

这时候就要用到Resource Hacker这个工具来对打包好的EXE文件进行修改

下载地址:

链接: http://pan.baidu.com/s/1sk3TVaP 密码: hpgh

第一步:

打开下载好的Resource Hacker软件

ResourceHacker

ResourceHacker

第二步:

将需要修改的EXE文件拖入Resource Hacker界面内打开,然后打开左侧菜单的清单选项

 

第三步:

在左侧的编辑区内找到下图中蓝色部分,也就是requestedExecutionLevel标签

EXE4J打包的exe文件中,level属性值应该默认是asInvoker,是不会请求管理员权限的

 

第四步:

将level属性的值改成 level=”requireAdministrator”  修改完成后一定要点击开始按钮进行编译,修改才能生效,如下图:

RHEditDone

 

第五步:

编译完成后直接点击关闭Resource Hacker界面 ,弹出提示框,选择是,并覆盖保存之前的EXE文件

RHReplace

 

第六步:

最后,右键刷新一下,看看原来的EXE文件上是不是多了一个UAC小盾牌!

有的话说明修改成功!