-
-
[讨论]设置开机启动不了??
-
发表于: 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
就是正常的系统弹出的程序遇到问题需要关闭的对话框.请问这样为什么不能设置开机运行,如果不是这样,需要准备写什么前提条件?
.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直播授课
赞赏
他的文章
- [求助]怪事呀,到底谁在作怪? 2293
- [求助]再见怎么杀都还在的病毒 5569
- [求助]怎么清除这种病毒,好像是rootkit 4277
- [讨论]这样是不是也算实现了自删除 5259
- [分享]C语言中很多人不知道的小知识 5209
赞赏
雪币:
留言: