[原创]程序默认安装路径设置器(初学Win32汇编作品 附源文件)
文章作者:黑菜信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])
ASM文件:
[code].386
.model flat, stdcall
option casemap :none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include advapi32.inc
includelib advapi32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DLG_MAIN equ 1
ICO_MAIN equ 1000
IDD_C equ 1001
IDD_D equ 1002
IDD_E equ 1003
IDD_F equ 1004
IDD_ZDY equ 1005
IDD_EDT1 equ 1006
IDD_OK equ 1007
.data?
hInstance dd ?
szZDY dd 256 dup (?)
.const
szRegKey db 'SOFTWARE\Microsoft\Windows\CurrentVersion',0
szRegValue db 'ProgramFilesDir',0
szStr1 db 'C:\Program Files',0
szStr2 db 'D:\Program Files',0
szStr3 db 'E:\Program Files',0
szStr4 db 'F:\Program Files',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam
LOCAL @save
mov eax,wMsg
.if eax == WM_CLOSE
invoke EndDialog,hWnd,NULL
.elseif eax == WM_INITDIALOG
invoke LoadIcon,hInstance,ICO_MAIN
invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
invoke GetDlgItem,hWnd,IDD_EDT1
invoke EnableWindow,eax,FALSE
.elseif eax == WM_COMMAND
mov eax,wParam
invoke IsDlgButtonChecked,hWnd,IDD_C
.if ax==BST_CHECKED
invoke GetDlgItem,hWnd,IDD_EDT1
invoke EnableWindow,eax,FALSE
invoke RegCreateKey,HKEY_LOCAL_MACHINE,addr szRegKey,addr @save
invoke RegSetValueEx,@save,addr szRegValue,NULL,REG_SZ,addr szStr1,sizeof szStr1
invoke RegCloseKey,@save
.endif
invoke IsDlgButtonChecked,hWnd,IDD_D
.if ax==BST_CHECKED
invoke GetDlgItem,hWnd,IDD_EDT1
invoke EnableWindow,eax,FALSE
invoke RegCreateKey,HKEY_LOCAL_MACHINE,addr szRegKey,addr @save
invoke RegSetValueEx,@save,addr szRegValue,NULL,REG_SZ,addr szStr2,sizeof szStr2
invoke RegCloseKey,@save
.endif
invoke IsDlgButtonChecked,hWnd,IDD_E
.if ax==BST_CHECKED
invoke GetDlgItem,hWnd,IDD_EDT1
invoke EnableWindow,eax,FALSE
invoke RegCreateKey,HKEY_LOCAL_MACHINE,addr szRegKey,addr @save
invoke RegSetValueEx,@save,addr szRegValue,NULL,REG_SZ,addr szStr3,sizeof szStr3
invoke RegCloseKey,@save
.endif
invoke IsDlgButtonChecked,hWnd,IDD_F
.if ax==BST_CHECKED
invoke GetDlgItem,hWnd,IDD_EDT1
invoke EnableWindow,eax,FALSE
invoke RegCreateKey,HKEY_LOCAL_MACHINE,addr szRegKey,addr @save
invoke RegSetValueEx,@save,addr szRegValue,NULL,REG_SZ,addr szStr4,sizeof szStr4
invoke RegCloseKey,@save
.endif
invoke IsDlgButtonChecked,hWnd,IDD_ZDY
.if ax==BST_CHECKED
invoke GetDlgItem,hWnd,IDD_EDT1
invoke EnableWindow,eax,TRUE
invoke GetDlgItemText,hWnd,IDD_EDT1,addr szZDY,sizeof szZDY
invoke RegCreateKey,HKEY_LOCAL_MACHINE,addr szRegKey,addr @save
invoke RegSetValueEx,@save,addr szRegValue,NULL,REG_SZ,addr szZDY,sizeof szZDY
invoke RegCloseKey,@save
.endif
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
_ProcDlgMain endp
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,0
invoke ExitProcess,NULL
end start[/code]
rc文件:
[code]#define DLG_MAIN 1
#define IDC_GRP1 3
#define IDD_C 1001
#define IDD_D 1002
#define IDD_E 1003
#define IDD_F 1004
#define IDD_EDT1 1006
#define IDD_ZDY 1005
#define IDC_STC1 2
#define ICO_MAIN 1000
#include "resource.h"
DLG_MAIN DIALOGEX 6,5,179,109
CAPTION "程序默认安装目录设置器"
FONT 8,"MS Sans Serif",0,0
STYLE 0x10CF0000
BEGIN
CONTROL "C:\Program Files",IDD_C,"Button",0x50010009,8,11,66,11
CONTROL "D:\Program Files",IDD_D,"Button",0x50010009,8,29,66,11
CONTROL "E:\Program Files",IDD_E,"Button",0x50010009,8,48,66,11
CONTROL "F:\Program Files",IDD_F,"Button",0x50010009,8,66,66,11
CONTROL "",IDD_EDT1,"Edit",0x50010000,80,84,90,11,0x00000200
CONTROL "自定义路径",IDD_ZDY,"Button",0x50010009,8,84,66,11
CONTROL "作用: 修改程序默认安装目录。 微软官方建议不要修改!有可能会遭遇未预料的问题,给系统稳定性带来影响。",IDC_STC1,"Static",0x50000000,88,12,74,65
CONTROL "",IDC_GRP1,"Button",0x50000007,4,3,170,102
END
ICO_MAIN ICON DISCARDABLE "Main.ico"
[/code]
想ASM同志学习,共享代码!
并在此感谢他对我的极大帮助,大清早就伤他脑细胞帮我改代码
[s:267] 呵呵 加油
建议去读那个给程序加区段的源码 应该会学得比较快 只能设定在 'Program Files' 吗?
szRegKey db 'SOFTWARE\Microsoft\Windows\CurrentVersion',0
szRegValue db 'ProgramFilesDir',0
szStr1 db 'C:\Program Files',0
szStr2 db 'D:\Program Files',0
szStr3 db 'E:\Program Files',0
szStr4 db 'F:\Program Files',0 又是菠菜发的东西...
貌似是提供安装包的安装路径的选择吧?
页:
[1]