Page 1 sur 1

Activé/Désactivé/Voir état services windows

Publié : ven. 18/juil./2014 23:39
par caussatjerome
Voiçi un petit début de code pour voir modifier l'état d'un service windows, (quelque exemple dans mon code)
pratique pour créer un programme automatique de désactivation de services gourmand en cpu !

Code : Tout sélectionner

; Lire une chaine dans le registre
Procedure.s ReadRegKey(OpenKey.l,SubKey.s,ValueName.s) ; ====================================== ReadRegKey
;key.s=ReadRegKey(#HKEY_LOCAL_MACHINE,"SOFTWARE\Zone Labs\ZoneAlarm","InstallDirectory")
hKey.l=0
keyvalue.s= Space (255)
DataSize.l=255
If RegOpenKeyEx_ (OpenKey,SubKey,0, #KEY_READ ,@hKey)
keyvalue= ""
Else
If RegQueryValueEx_ (hKey,ValueName,0,0,@keyvalue,@DataSize)
keyvalue= ""
Else
keyvalue= Left (keyvalue,DataSize-1)
EndIf
RegCloseKey_ (hKey)
EndIf
ProcedureReturn keyvalue
EndProcedure

; ecrire une chaine dans le registre
Procedure.l WriteRegKey(OpenKey.l,SubKey.s,keyset.s,keyvalue.s) ; ------------------------ WRITE KEY
; result.l=WriteRegKey(#HKEY_LOCAL_MACHINE,"SOFTWARE\Test Program Name","Test","TestValue")
hKey.l=0
If RegCreateKey_ (OpenKey,SubKey,@hKey)=0
Result=1
DataSize.l= Len (keyvalue)
If RegSetValueEx_ (hKey,keyset,0, #REG_SZ ,@keyvalue,DataSize)=0
Result=2
EndIf
RegCloseKey_ (hKey)
EndIf
ProcedureReturn Result
;returns 0 if error / could not open or create SubKey
;returns 1 if error / could not write new value
;returns 2 if Success!!
EndProcedure

; ecrire un long dans le registre
Procedure.l WritebinaryRegKey(OpenKey.l,SubKey.s,keyset.s,keyvalue.l) ; ------------------------ WRITE KEY
; result.l=WriteRegKey(#HKEY_LOCAL_MACHINE,"SOFTWARE\Test Program Name","Test","TestValue")
hKey.l=0
If RegCreateKey_ (OpenKey,SubKey,@hKey)=0
Result=1
DataSize.l=4 ; nombre d'octets ecrit !!
If RegSetValueEx_ (hKey,keyset,0, #REG_BINARY ,@keyvalue,DataSize)=0
Result=2
EndIf
RegCloseKey_ (hKey)
EndIf
ProcedureReturn Result
;returns 0 if error / could not open or create SubKey
;returns 1 if error / could not write new value
;returns 2 if Success!!
EndProcedure

; ecrire un long dans le registre
Procedure.l WriteDWRegKey(OpenKey.l,SubKey.s,keyset.s,keyvalue.l) ; ------------------------ WRITE KEY
; result.l=WriteRegKey(#HKEY_LOCAL_MACHINE,"SOFTWARE\Test Program Name","Test","TestValue")
hKey.l=0
If RegCreateKey_ (OpenKey,SubKey,@hKey)=0
Result=1
DataSize.l=4 ; nombre d'octets ecrit !!
If RegSetValueEx_ (hKey,keyset,0, #REG_DWORD ,@keyvalue,DataSize)=0
Result=2
EndIf
RegCloseKey_ (hKey)
EndIf
ProcedureReturn Result
;returns 0 if error / could not open or create SubKey
;returns 1 if error / could not write new value
;returns 2 if Success!!
EndProcedure

Procedure.l DelRegALLKey(OpenKey.l,SubKey.s,keyset.s) ; ------------------------ DELETE DOSSIER
; result.l=WriteRegKey(#HKEY_LOCAL_MACHINE,"SOFTWARE\Test Program Name")
hKey.l=0
If RegDeleteKey_(OpenKey,SubKey)=0
Result=2
EndIf
ProcedureReturn Result
;returns 0 if error / could not del SubKey
;returns 2 if Success!!
EndProcedure

Procedure.l DelRegKey(openkey.l,Subkey.s,keyset.s) ; efface une clef registre
If RegOpenKeyEx_(openkey.l, subkey.s, 0, keyset.s, @hKey) = #ERROR_SUCCESS ; ouvre la clée
If RegDeleteValue_(hKey, keyset.s):result=2:EndIf ; efface la valeur
RegCloseKey_(hKey)
Else
result=0
EndIf
ProcedureReturn result
EndProcedure

Procedure.s getetatservice(servicename.s)
etatservice.s=ReadRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\services\"+servicename.s,"Start")
ProcedureReturn etatservice.s
EndProcedure

Procedure setetatservice(servicename.s,etat.l)
WritedwRegKey(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\services\"+servicename.s,"Start",etat.l)
EndProcedure


;1=Demarrage System
;2=automatique
;3=manuel
;4=desactiver
;Registre a distance = RemoteRegistry
;Assistance IPV6 = iphlpsvc
;Branchcach = PeerDistSvc
;Windows Search = WSearch
;Windows Connect Now = wcncsvc
;WebClient = WebClient
;Téléphonie = TapiSrv
;Télécopie = Fax
;Stratégie de retrait de la carte à puce = SCPolicySvc
;Service Panneau de saisie Tablet PC = TabletInputService
;Service Initiateur iSCSI de Microsoft = MSiSCSI
;Service hôte WDIServiceHost = WdiServiceHost

MessageRequester("service","Etat du service : "+Str(Asc(getetatservice("RemoteRegistry"))))
setetatservice("RemoteRegistry",4)
MessageRequester("service","Etat du service modifier à : "+Str(Asc(getetatservice("RemoteRegistry"))))
End 0
Nésiter pas à commenter ! dire ce que vous en pensez; donner des services pouvant êtres désactivé, etc...

Re: Activé/Désactivé/Voir état services windows

Publié : sam. 19/juil./2014 7:08
par Backup
t'es pas obligé de passer par le registre pour désactiver/Activer un service Windows :)


tu peux faire comme ça :

Code : Tout sélectionner


Declare  WindowService(nom$,etat=1)

; Exemple d'utilisation 
WindowService("WinDefend",0) ; arrete windows defender
 delay ( 5000 )
; 
WindowService("WinDefend",1) ;relance windows defender


;-Zone procedure
procedure WindowService(nom$,etat=1)
	; de Stefou
	Select etat
		Case 1
		option$="START "
		Case 0
		option$="STOP "
		Case 2
		option$="PAUSE "
		Case 3
		option$="CONTINUE "
	EndSelect
	RunProgram("c:\WINDOWS\system32\net.exe",option$+Chr(34)+nom$+Chr(34),"c:\WINDOWS\system32\",#PB_Program_Wait | #PB_Program_Hide )
EndProcedure
; Epb


Re: Activé/Désactivé/Voir état services windows

Publié : lun. 21/juil./2014 8:07
par caussatjerome
super !
C'est beaucoup plus simple et court !
Merci Dobro !