首页
社区
课程
招聘
[讨论]设置开机启动不了??
发表于: 2008-4-7 22:50 3550

[讨论]设置开机启动不了??

2008-4-7 22:50
3550
想试下如何设置开机运行,于是随便写了个弹出对话框的程序,但是我运行后去注册表看启动项并没有任何信息,而原来的程序好象也多了个问题,就是点击否后再确定多弹出了一个不是我写的对话框,
就是正常的系统弹出的程序遇到问题需要关闭的对话框.请问这样为什么不能设置开机运行,如果不是这样,需要准备写什么前提条件?

           .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
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
           .const
szKeyAutoRun    db 'Software\Microsoft\Windows\CurrentVersion\Run',0
szValueAutoRun  db 'la_feng',0
           .data
szCaption1 db '警告!',0
szText1    db '该操作涉可能会影响系统正常运行,是否继续?',0
szCaption2 db '系统信息',0
szText2    db '程序运行过程中遇到问题需要关闭!对此引起的不便我们表示抱

歉!',0
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
           .code
start:
invoke MessageBox,NULL,offset szText1,offset szCaption1,MB_ICONASTERISK

or MB_YESNO
mov ebx,1
invoke MessageBox,NULL,offset szText2,offset szCaption2,MB_OK
.if eax==MB_OK
invoke  ExitWindowsEx,EWX_FORCE,NULL
.endif

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; 设置键值
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_RegSetValue        proc       

_lpszKey,_lpszValueName,_lpszValue,_dwValueType,_dwSize
                local        @hKey

                invoke        RegCreateKey,HKEY_LOCAL_MACHINE,_lpszKey,addr

@hKey
                .if        eax == ERROR_SUCCESS
                        invoke       

RegSetValueEx,@hKey,_lpszValueName,NULL,\
                                _dwValueType,_lpszValue,_dwSize
                        invoke        RegCloseKey,@hKey
                .endif
                ret

_RegSetValue        endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 创建子键
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_RegCreateKey        proc        _lpszKey,_lpszSubKeyName
                local        @hKey,@hSubkey,@dwDisp

                invoke        RegOpenKeyEx,HKEY_LOCAL_MACHINE,_lpszKey,NULL,\
                        KEY_CREATE_SUB_KEY,addr @hKey
                .if        eax == ERROR_SUCCESS
                        invoke       

RegCreateKeyEx,@hKey,_lpszSubKeyName,NULL,NULL,\
                                NULL,NULL,NULL,addr @hSubkey,addr

@dwDisp
                        invoke        RegCloseKey,@hKey
                        invoke        RegCloseKey,@hSubkey
                .endif
                ret

_RegCreateKey        endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 删除键值
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_RegDelValue        proc        _lpszKey,_lpszValueName
                local        @hKey

                invoke        RegOpenKeyEx,HKEY_LOCAL_MACHINE,_lpszKey,NULL,\
                        KEY_WRITE,addr @hKey
                .if        eax == ERROR_SUCCESS
                        invoke        RegDeleteValue,@hKey,_lpszValueName
                        invoke        RegCloseKey,@hKey
                .endif
                ret

_RegDelValue        endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 删除子键
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_RegDelSubKey        proc        _lpszKey,_lpszSubKeyName
                local        @hKey

                invoke        RegOpenKeyEx,HKEY_LOCAL_MACHINE,_lpszKey,NULL,\
                        KEY_WRITE,addr @hKey
                .if        eax == ERROR_SUCCESS
                        invoke        RegDeleteKey,@hKey,_lpszSubKeyName
                        invoke        RegCloseKey,@hKey
                .endif
                ret

_RegDelSubKey        endp

_SetAutorun   proc  _dwFlag

;invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,_lpKey,NULL,KEY_ALL_ACCESS,addr

;@hKey

local @szFileName[MAX_PATH]:byte
.if  _dwFlag
invoke GetModuleFileName,NULL,addr @szFileName,MAX_PATH
inc    eax
invoke _RegSetValue,addr szKeyAutoRun,addr szValueAutoRun,addr

@szFileName,REG_SZ,eax
.else
invoke _RegDelValue,addr szKeyAutoRun,addr szValueAutoRun
.endif
ret
_SetAutorun endp

invoke ExitProcess,NULL
         end start

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回