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

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
caussatjerome
Messages : 50
Inscription : lun. 24/sept./2012 20:57
Localisation : Somme

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

Message 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...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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

Avatar de l’utilisateur
caussatjerome
Messages : 50
Inscription : lun. 24/sept./2012 20:57
Localisation : Somme

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

Message par caussatjerome »

super !
C'est beaucoup plus simple et court !
Merci Dobro !
Répondre