Une méthode classique pour gérer l'automatisme des applications par HKLM et une copie dans le registre System. Ce code permet ainsi de reproduire l'activité d'un programme à chaque redémarrage. Pratique...
Source / Exemple :
.386
.model flat,stdcall
option casemap:none
; La seule inclusion nécessaire pour le code relatif
; à l'inscription est advapi.inc et advapi.lib
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\advapi32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\advapi32.lib
.data
szKeyName db "Software\Microsoft\Windows\CurrentVersion\Run\",0
; La valeur inscrite et le nom de l'exécutable soit Test.exe
szStringValue db "Stormy",0
RegistryText db "Test.exe",0
Slash db "\",0
; Les OFFSETs initialisés de notre MessageBox.
Title_Box db "ASM-Reg",0
Msg_Box db "-Redémarrage automatisé-",0
; Nous réservons les zones mémoires non-initialisées.
.data?
Disp DWORD ?
pKey DWORD ?
Himself db 256 dup (?)
Systm_Dir db 256 dup (?)
.code
start:
; Inscription de la clé par la fonction SetRegKeysz
; avec passage de tout les paramètres OFFSET et SIZEOF.
push SIZEOF szStringValue
push OFFSET szStringValue
push OFFSET szKeyName
push OFFSET RegistryText
call SetRegKeysz
cmp eax,ERROR_SUCCESS
; Nous sollicitons le répertoire Windows\System.
push SIZEOF Systm_Dir
push OFFSET Systm_Dir
call GetSystemDirectory
; Nous associons à notre buffer "Syst_Dir" le caractère Slash.
push OFFSET Slash
push OFFSET Systm_Dir
call lstrcat
; Auquel nous associons le nom de l'application Test.
push OFFSET RegistryText
push OFFSET Systm_Dir
call lstrcat
; Nous obtenons le nom de l'application par la
; fonction GetModuleFilename. On doit le placer
; dans notre buffer adéquat nommé "Himself".
push SIZEOF Himself
push OFFSET Himself
push NULL
call GetModuleFileName
; Nous copions l'application dont le nom est contenu
; dans le buffer "Himself". Le répertoire nommé dans
; notre buffer "Systm_Dir" est donc la destination.
push FALSE
push OFFSET Systm_Dir
push OFFSET Himself
call CopyFile
; Création de notre MessageBox.
Continue:
push MB_OK
push offset Title_Box
push offset Msg_Box
push NULL
call MessageBox
push NULL
call ExitProcess
; Voici la fonction qui permet l'écriture pour une Reg Key.
SetRegKeysz PROC lpszString:DWORD,
lpszKeyName:DWORD,
lpszValueName:DWORD,
dwStringLength:DWORD
push OFFSET Disp
push OFFSET pKey
push NULL
push KEY_ALL_ACCESS
push REG_OPTION_NON_VOLATILE
push NULL
push NULL
push lpszKeyName
push HKEY_LOCAL_MACHINE ; soit HKLM
call RegCreateKeyEx
cmp eax,ERROR_SUCCESS
push dwStringLength
push lpszString
push REG_SZ
push NULL
push lpszValueName
push pKey
call RegSetValueEx
push pKey
call RegCloseKey
ret
SetRegKeysz ENDP
End start
Conclusion :
Pour les applications qui réclament un lancement automatique. @
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.