备注:开发工具Radasm (以下都是在此工具中操作)
1.如何给win32asm程序添加UAC控制
灵感来自vc如何添加UAC,其中vs10自带UAC控制,如果不特殊设定的话就默认设置asinvoke。
第一,自建个vs10项目,在debug/relese目录下找到.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>
将文件copy到asm工程文件夹下(自己建个文件将以上内容copy进去就行)例如名为 uac.mainfest
第二,UAC控制的文件准备好后;打开xx.rc文件(radasm在创建工程的时候会创建此文件),输入以下内容
#define IDR_RCDATA1 1 IDR_RCDATA1 24 "uac.manifest"
注意id值一定要为1,类型24
第三,编译链接的时候,要记住先‘编译资源脚本’。
2. 设置段SECTION的属性
开发中会出现子修改code代码的需求,如果直接利用代码修改自身代码,会提示不可写,这是因为.code段属性为可读可执行,所以写入出错。
打开菜单 ‘工程- 工程选项’ 弹出对话窗口,在’链接‘输入框中 LINKE.exe 后添加
/SECTION:.text|RWE
原文:http://www.cnblogs.com/M4ster/p/win32asm_exp.html