Contrôle de compte d’utilisateur avec AutoIt

Amesam/ mars 29, 2020/ Programmation

Contrôle de compte d’utilisateur avec AutoIt

Avant toute modification dans la Base de registre, il est recommandé de faire une sauvegarde de celle-ci.


Ce sujet est technique, les informations données ici touchent votre système, PC-ATI n’est pas tenu responsable des modifications que vous pourriez apporter. Il est donc conseillé de ne pas changer les paramètres du fichier REGUAC.au3

:: Conseil ; Avant toute manipulation effectuez une sauvegarde de votre registre. Utilisez Erunt, utilitaire pour une sauvegarde de votre registre.
:: Conseil ; Utilisez idéalement une machine virtuelle (VM) pour vos tests.

Ici nous allons voir comment construire un contrôle de compte d’utilisateur (UAC).
Je vais prendre pour l’exemple l’outil UAC-LEVEL.
La base de l’interface est faite rapidement avec Koda FormDesigner.

Pas de panique, vous allez voir ça roule tout seul si vous suivez les instructions (dans ce sujet vous avez tout le code).

Pour commencer il vous faut bien évidemment Scite (éditeur de texte (gratuit) multi plate-forme).

L’interface :

Un petit effet de style pour donner un plus de design.

Image

Créer un répertoire :

Commencer par créer un répertoire nommé UAC-Level, ou comme vous voulez.
Dans ce nouveau répertoire nous allons stocker des fichiers .au3 pour la construction et l’exécution de l’outil (3 seulement).

Premier fichier :

Pour donner cette forme avec ces angles supérieurs arrondis et le dégradé de l’interface il faut utiliser certaines fonctions.

  • La première servira à intégrer les arrondis des angles : _GuiRoundCorners ().
  • Ensuite le dégradé de l’interface : GradientFill ().
  • Array.au3 n’intègre plus sa fonction _ArrayCreate(), donc nous l’ajoutons.

Copier/coller ci-dessous les fonctions et coller celles-ci sous un fichier .au3 que vous nommerez CreatGui.au3. et ceci bien sur dans le répertoire crée : UAC-Level
Vous verrez plus tard cette include (#include <CreatGui.au3> ) est intégrer dans votre code source.

Code :

Func _GuiRoundCorners($h_win, $i_x1, $i_y1, $i_x3, $i_y3)
	Dim $pos, $ret, $ret2
	$pos = WinGetPos($h_win)
	$ret = DllCall("gdi32.dll", "long", "CreateRoundRectRgn", "long", $i_x1, "long", $i_y1, "long", $pos[2], "long", $pos[3], "long", $i_x3, "long", $i_y3)
	If $ret[0] Then
		$ret2 = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $ret[0], "int", 1)
		If $ret2[0] Then
			Return 1
		Else
			Return 0
		EndIf
		Else
		Return 0
		EndIf
EndFunc

Func GradientFill($im, $x1, $y1, $width, $height, $left_color, $right_color)
	Local $color0=($left_color[0]-$right_color[0])/$height
	Local $color1=($left_color[1]-$right_color[1])/$height
	$color2=($left_color[2]-$right_color[2])/$height
	For $Y=0 to $height-1
		$red=$left_color[0]-floor($Y*$color0)
		$green=$left_color[1]-floor($Y*$color1)
		$blue=$left_color[2]-floor($Y*$color2)
		$col = Dec(Hex($blue,2) & Hex($green,2) & Hex($red,2))
		GUICtrlSetGraphic($im,$GUI_GR_COLOR, $col)
		GUICtrlSetGraphic($im,$GUI_GR_MOVE,0,$Y)
		GUICtrlSetGraphic($im,$GUI_GR_LINE,$width,$Y)
	Next
	GUICtrlSetGraphic($im,$GUI_GR_COLOR, 0xFFFFFF)
	GUICtrlSetGraphic($im,$GUI_GR_MOVE,0,$height)
	GUICtrlSetGraphic($im,$GUI_GR_LINE, $width,$height)
	GUICtrlSetGraphic($im,$GUI_GR_REFRESH)
EndFunc

Func _ArrayCreate($v_0, $v_1 = 0, $v_2 = 0, $v_3 = 0, $v_4 = 0, $v_5 = 0, $v_6 = 0, $v_7 = 0, $v_8 = 0, $v_9 = 0, $v_10 = 0, $v_11 = 0, $v_12 = 0, $v_13 = 0, $v_14 = 0, $v_15 = 0, $v_16 = 0, $v_17 = 0, $v_18 = 0, $v_19 = 0, $v_20 = 0)
    Local $av_Array[21] = [$v_0, $v_1, $v_2, $v_3, $v_4, $v_5, $v_6, $v_7, $v_8, $v_9, $v_10, $v_11, $v_12, $v_13, $v_14, $v_15, $v_16, $v_17, $v_18, $v_19, $v_20]
    ReDim $av_Array[@NumParams]
    Return $av_Array
EndFunc   ;==>_ArrayCreate

Voici votre premier fichier créé.

Deuxième fichier :

Créez un fichier nommé REGUAC.au3 dans le même répertoire.

Nous allons dans un premier temps déclarer des variables Global
Ensuite il faut déclarer les clés HKLM, HKCU, HKCR afin de travailler avec une version 64 ou 32 bits.
Puis différentes fonctions qui agissent sur le registre pour valider le niveau de sécurité.

Les noms des fonctions parlent d’eux même.

_VERIF_NIV_UAC()
On vérifie la position de la clé de registre System, les valeurs ConsentPromptBehaviorAdmin, EnableLUA, PromptOnSecureDesktop sont exploitées pour vérifier le niveau de l’UAC.

_VERIF_NIV_UAC_RAPP()
Vérifie et affiche le niveau

_UAC_NIV1()
On écrit les données pour le niveau 1.

_UAC_NIV2()
On écrit les données pour le niveau 2.

_UAC_NIV3()
On écrit les données pour le niveau 3.

_ACTIVUAC_VISTA()
On écrit les données pour activer l’UAC pour Vista (sous vista pas de niveau, soit la protection est activée soit désactivée).

_DESACTUAC()
On écrit les données pour désactiver l’UAC, niveau 0.

Code :

Global $MSG = @ComputerName & " - " & @UserName & "  -  " & @OSVersion & " - " & @OSARCH & @CRLF
Global $VarUAC = ''
Global $Input1
Global $Checkbox1, $Checkbox2, $Checkbox3, $Checkbox4, $Input1
Global $TEXTUAC = ''
Global $CPBA = ''
Global $ELUA = ''
Global $POSD = ''
Global $UACDN = ''
Global $UAC = ''
Global $UACT = ''

Global $HKLM = 'HKLM'
Global $HKCU = 'HKCU'
Global $HKCR = 'HKCR'
   
    If @OSArch <> 'X86' Then
       $HKLM = 'HKLM64'
       $HKCR = 'HKCR64'
       $HKCU = 'HKCU64'
    EndIf

Func _VERIF_NIV_UAC()
	If @OSVersion = "WIN_7" Or @OSVersion = "WIN_8" Or @OSVersion = "WIN_10" Then
		If @OSArch <> 'X86' Then
			$HKLM = 'HKLM64'
			$HKCR = 'HKCR64'
			$HKCU = 'HKCU64'
		EndIf
		$CPBA = RegRead($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "ConsentPromptBehaviorAdmin")
		$ELUA = RegRead($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA")
		$POSD = RegRead($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "PromptOnSecureDesktop")
		If $CPBA = 0 And $ELUA = 0 And $POSD = 0 Then $UAC = $MSG & "Votre Contrôle de compte d'utilisateur est désactivé ! Niveau 0"
		If $CPBA = 5 And $ELUA = 1 And $POSD = 0 Then $UAC = $MSG & "Votre Contrôle de compte d'utilisateur est activé ! Niveau 1"
		If $CPBA = 5 And $ELUA = 1 And $POSD = 1 Then $UAC = $MSG & "Votre Contrôle de compte d'utilisateur est activé ! Niveau 2"
		If $CPBA = 2 And $ELUA = 1 And $POSD = 1 Then $UAC = $MSG & "Votre Contrôle de compte d'utilisateur est activé ! Niveau 3"
		$UACDN = RegRead($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
		If $UACDN <> "" Then RegDelete($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
		MsgBox (64, "UAC-LEVEL - Amesam", $UAC)
	EndIf
	If (@OSVersion = "WIN_VISTA") Then
		$CPBA = RegRead($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA")
		If $CPBA = 0 Then $UACT = $MSG & "Votre Contrôle de compte d'utilisateur est désactivé."
		If $CPBA = 1 Then $UACT = $MSG & "Votre Contrôle de compte d'utilisateur est activé."
		$UACDN = RegRead($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
		If $UACDN <> "" Then RegDelete($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
		MsgBox (64, "UAC-LEVEL - Amesam", $UAC)
	EndIf
EndFunc

Func _VERIF_NIV_UAC_RAPP()
	If @OSVersion = "WIN_7" Or @OSVersion = "WIN_8" Or @OSVersion = "WIN_10" Then
		If @OSArch <> 'X86' Then
			$HKLM = 'HKLM64'
			$HKCR = 'HKCR64'
			$HKCU = 'HKCU64'
		EndIf
		$CPBA = RegRead($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "ConsentPromptBehaviorAdmin")
		$ELUA = RegRead($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA")
		$POSD = RegRead($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "PromptOnSecureDesktop")
		If $CPBA = 0 And $ELUA = 0 And $POSD = 0 Then $UAC = "0"
		If $CPBA = 5 And $ELUA = 1 And $POSD = 0 Then $UAC = "1"
		If $CPBA = 5 And $ELUA = 1 And $POSD = 1 Then $UAC = "2"
		If $CPBA = 2 And $ELUA = 1 And $POSD = 1 Then $UAC = "3"
		$UACDN = RegRead($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
		If $UACDN <> "" Then RegDelete($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
		GUICtrlSetData($Input1, $UAC)
	EndIf
	If (@OSVersion = "WIN_VISTA") Then
		$CPBA = RegRead($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA")
		If $CPBA = 0 Then $UACT = "0"
		If $CPBA = 1 Then $UACT = "1"
		$UACDN = RegRead($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
		If $UACDN <> "" Then RegDelete($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
		GUICtrlSetData($Input1, $UACT)
	EndIf
EndFunc

Func _UAC_NIV1()
	If @OSVersion = "WIN_7" Or @OSVersion = "WIN_8" Or @OSVersion = "WIN_10" Then
		If @OSArch <> 'X86' Then
			$HKLM = 'HKLM64'
			$HKCR = 'HKCR64'
			$HKCU = 'HKCU64'
		EndIf
		RegWrite($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "ConsentPromptBehaviorAdmin", "REG_DWORD", 5)
		RegWrite($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA", "REG_DWORD", 1)
		RegWrite($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "PromptOnSecureDesktop", "REG_DWORD", 0)
		$UACDN = RegRead($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
		If $UACDN <> "" Then RegDelete($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
		GUICtrlSetData($Input1, $VarUAC)
	EndIf
EndFunc

Func _UAC_NIV2()
	If @OSVersion = "WIN_7" Or @OSVersion = "WIN_8" Or @OSVersion = "WIN_10" Then
		If @OSArch <> 'X86' Then
			$HKLM = 'HKLM64'
			$HKCR = 'HKCR64'
			$HKCU = 'HKCU64'
		EndIf
		RegWrite($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "ConsentPromptBehaviorAdmin", "REG_DWORD", 5)
		RegWrite($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA", "REG_DWORD", 1)
		RegWrite($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "PromptOnSecureDesktop", "REG_DWORD", 1)
		$UACDN = RegRead($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
		If $UACDN <> "" Then RegDelete($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
	EndIf
EndFunc

Func _UAC_NIV3()
	If @OSVersion = "WIN_7" Or @OSVersion = "WIN_8" Or @OSVersion = "WIN_10" Then
		If @OSArch <> 'X86' Then
			$HKLM = 'HKLM64'
			$HKCR = 'HKCR64'
			$HKCU = 'HKCU64'
		EndIf
		RegWrite($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "ConsentPromptBehaviorAdmin", "REG_DWORD", 2)
		RegWrite($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA", "REG_DWORD", 1)
		RegWrite($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "PromptOnSecureDesktop", "REG_DWORD", 1)
		$UACDN = RegRead($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
		If $UACDN <> "" Then RegDelete($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
	EndIf
EndFunc

Func _ACTIVUAC_VISTA()
	If @OSArch <> 'X86' Then
			$HKLM = 'HKLM64'
			$HKCR = 'HKCR64'
			$HKCU = 'HKCU64'
		EndIf
	If (@OSVersion = "WIN_VISTA") Then
		RegWrite($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA", "REG_DWORD", 1)
		$UACDN = RegRead($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
		If $UACDN <> "" Then RegDelete($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
	EndIf
EndFunc

Func _DESACTUAC()
	If @OSArch <> 'X86' Then
			$HKLM = 'HKLM64'
			$HKCR = 'HKCR64'
			$HKCU = 'HKCU64'
		EndIf
	If @OSVersion = "WIN_7" Or @OSVersion = "WIN_8" Or @OSVersion = "WIN_10" Then
		RegWrite($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "ConsentPromptBehaviorAdmin", "REG_DWORD", 0)
		RegWrite($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA", "REG_DWORD", 0)
		RegWrite($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "PromptOnSecureDesktop", "REG_DWORD", 0)
		$UACDN = RegRead($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
		If $UACDN <> "" Then RegDelete($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
	EndIf
	If (@OSVersion = "WIN_VISTA") Then
		RegWrite($HKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "EnableLUA", "REG_DWORD", 0)
		$UACDN = RegRead($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
		If $UACDN <> "" Then RegDelete($HKLM & "\SOFTWARE\Microsoft\Security Center", "UacDisableNotify")
	EndIf
EndFunc

Troisième fichier :

Créez pour finir un fichier nommé UACLevel.au3

Pour commencer il faut les droits administrateur pour agir sur votre compte d’utilisateur ou sur un autre ordinateur, nous allons donc utiliser #RequireAdmin qui spécifie que le script en cours exige les droits d’administrateur complets pour fonctionner.

Ensuite vous trouverez ces lignes qui nous indiquent la compilation vers un exécutable.

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=chevalier-icone-8588.ico
#AutoIt3Wrapper_Compile_Both=y
#AutoIt3Wrapper_UseX64=y
#EndRegion
;**** Directives created by AutoIt3Wrapper_GUI ****

Pour compiler un script Autoit :

  • Sous Scite cliquez sur l’onglet Outils
  • Puis sélectionnez compilé (ou depuis votre répertoire (créé comme indiqué au début du sujet) UAC-Level et clique droit sur votre fichier source UAC-Level.au3).
  • Vous pouvez configurer comme ci-dessous, avec deux versions .exe en 64 et 32 bits et ajouter un icone.
Image

Sous votre répertoire UACLevel vous trouverez deux exécutables, UAC-LEVEL.exe et UAC-LEVEL_x64.exe.

Image

Ensuite les includes :

#include <GUIConstantsEx.au3> ; Gestion de la GUI.
#include <StaticConstants.au3> ; Étiquette de contrôle GUI/styles statiques.
#include <WindowsConstants.au3>; Contrôle de style Windows.
#include <WinApi.au3> ; Les appels d’API Windows traduits pour les fonctions AutoIt.
#include <EditConstants.au3> ; Contrôle de la GUI.
#include <Array.au3> ; Fonctions de manipulation de tableaux.

; Includes crées pour ce script
#include <CreatGui.au3>
#include <REGUAC.au3>

Déclarations de variables :

Global $RBOX_EVENT_CLOSE = 1
Global $ROUNDES = 20, $LastHwnd = 0
Global $ARRAY_COLOR_TOP_MIN[3] = [ 36 ,65 ,142] , $ARRAY_COLOR_TOP_MAX[3] = [11 ,42 ,122]

Local $hGui = RBoxCreate(« UAC-LEVEL By Amesam »,530,383)

Ensuite une boucle While où sera insérée le code de commande d’exécution du programme.
Puis une fonction pour gérer votre interface (GUI).

Code :

#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=chevalier-icone-8588.ico
#AutoIt3Wrapper_Compile_Both=y
#AutoIt3Wrapper_UseX64=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include-once
; #INDEX# =======================================================================================================================
; Title .........: UAC-LEVEL
; Description ...: Gestion du contrôle de compte d'utilisateur.
; Author(s) .....: Amesam
; ===============================================================================================================================


#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinApi.au3>
#include <EditConstants.au3>
#include <Array.au3>

; Include crées pour ce script
#include <CreatGui.au3>
#include <REGUAC.au3>

; > Déclaration des variables
Global $RBOX_EVENT_CLOSE = 1
Global $ROUNDES = 20, $LastHwnd = 0
Global $ARRAY_COLOR_TOP_MIN[3] = [36 ,65 ,142] , $ARRAY_COLOR_TOP_MAX[3] = [11 ,42 ,122]

Local $hGui = RBoxCreate("UAC-LEVEL  By Amesam",530,383)

While 1
If (@OSVersion = "WIN_VISTA") Then ; Vérification de l'os Vista
	Msgbox(64, "", "Vous étes sous Windows Vista. Cliquer sur le niveau 0 pour désactiver l'UAC. Pour activer vous pouvez cliquer sur n'importe quel niveau. l'UAC Vista sera remis par défaut.")
EndIf ; Fin vérif Vista
	CheckX($hGui,$RBOX_EVENT_CLOSE,"GuiCtrlSetColor("&$RBOX_EVENT_CLOSE&",0xA3A3A3)","GuiCtrlSetColor("&$RBOX_EVENT_CLOSE&",0xFFFFFF)"); Contrôle de la couleur de la croix pour quitter le script
	Local $gMsg = GUIGetMsg() ; On attribu la variable à l'environnement
	Switch $gMsg ; si la croix de fermeture est validé on ferme le script
		Case $RBOX_EVENT_CLOSE, $GUI_EVENT_CLOSE ; si sélection de la case
			Exit ; Action fermeture GUI
		Case $Checkbox1 ; Mise à 0 UAC
			guictrlsetstate($Checkbox2, $gui_unchecked); on réinitialise la sélection
			guictrlsetstate($Checkbox3, $gui_unchecked)
			guictrlsetstate($Checkbox4, $gui_unchecked)
			GUICtrlSetData($Input1, "") ; on réinitialise le résultat
			If @OSVersion = "WIN_XP" Or @OSVersion = "WIN_XPe" Or @OSVersion = "WIN_2000" Then ; Vérification de l'os
				SplashTextOn("UAC-LEVEL - Amesam", @CRLF & " Version système non supportée", 180, 90) ; SplashTextOn, boite dialogue
				Sleep(2000)
				SplashOff()
			Else
				_DESACTUAC(); Désactivation UAC
				_VERIF_NIV_UAC_RAPP(); Vérification du niveau
				SplashTextOn("UAC-LEVEL : Contrôle du compte d'utilisateur", @CRLF & "UAC Désactivé !", 300, 90)
				Sleep(2000)
				SplashOff()
			EndIf
		Case $Checkbox2
			guictrlsetstate($Checkbox1, $gui_unchecked)
			guictrlsetstate($Checkbox3, $gui_unchecked)
			guictrlsetstate($Checkbox4, $gui_unchecked)
			GUICtrlSetData($Input1, "")
			If @OSVersion = "WIN_XP" Or @OSVersion = "WIN_XPe" Or @OSVersion = "WIN_2000" Then
				SplashTextOn("UAC-LEVEL - Amesam", @CRLF & " Version système non supportée", 180, 90)
				Sleep(2000)
				SplashOff()
			Else
				If (@OSVersion = "WIN_VISTA") Then
					_ACTIVUAC_VISTA(); Activation de UAC pour Vista
				Else
					_UAC_NIV1() ; Sélection du niveau
					_VERIF_NIV_UAC_RAPP()
					SplashTextOn("UAC-LEVEL : Contrôle du compte d'utilisateur", @CRLF & "UAC Activé par défaut niveau 1 !", 300, 90)
					Sleep(2000)
					SplashOff()
				EndIf
			EndIf
		Case $Checkbox3
			guictrlsetstate($Checkbox1, $gui_unchecked)
	        guictrlsetstate($Checkbox2, $gui_unchecked)
			guictrlsetstate($Checkbox4, $gui_unchecked)
			GUICtrlSetData($Input1, "")
			If @OSVersion = "WIN_XP" Or @OSVersion = "WIN_XPe" Or @OSVersion = "WIN_2000" Then
			SplashTextOn("UAC-LEVEL - Amesam", @CRLF & " Version système non supportée", 180, 90)
			Sleep(2000)
			SplashOff()
		Else
			If (@OSVersion = "WIN_VISTA") Then
				_ACTIVUAC_VISTA()
			Else
				_UAC_NIV2()
				_VERIF_NIV_UAC_RAPP()
				SplashTextOn("UAC-LEVEL : Contrôle du compte d'utilisateur", @CRLF & "UAC Activé par défaut niveau 2 !", 300, 90)
				Sleep(2000)
				SplashOff()
			EndIf
		EndIf
	   Case $Checkbox4
			guictrlsetstate($Checkbox1, $gui_unchecked)
			guictrlsetstate($Checkbox2, $gui_unchecked)
			guictrlsetstate($Checkbox3, $gui_unchecked)
			GUICtrlSetData($Input1, "")
			If @OSVersion = "WIN_XP" Or @OSVersion = "WIN_XPe" Or @OSVersion = "WIN_2000" Then
				SplashTextOn("UAC-LEVEL - Amesam", @CRLF & " Version système non supportée", 180, 90)
				Sleep(2000)
				SplashOff()
			Else
				If (@OSVersion = "WIN_VISTA") Then
				_ACTIVUAC_VISTA()
			Else
				_UAC_NIV3()
				_VERIF_NIV_UAC_RAPP()
				SplashTextOn("UAC-LEVEL : Contrôle du compte d'utilisateur", @CRLF & "UAC Activé par défaut niveau 3 !", 300, 90)
				Sleep(2000)
				SplashOff()
			EndIf
		EndIf
	EndSwitch
WEnd

Func CheckX($hGui, $CtrlID, $sCMD, $eCMD)
	Local $cGui = GUIGetCursorInfo($hGui)
	If Not IsArray($cGui) Then Return 0
	if $LastHwnd <> $cGui[4] And $cGui[4] = $CtrlID Then Return Execute($sCMD) + Assign("LastHwnd",$cGui[4])
	if $LastHwnd <> $cGui[4] Then Return Execute($eCMD) + Assign("LastHwnd",$cGui[4])
EndFunc

; Fonction GUI
Func RBoxCreate($Title,$width, $height ,$left=-1 ,$top=-1 ,$show=1)
	Local $GUI = GUICreate($Title,$width,$height,$left,$top,$WS_POPUP)
	Local $GCSF = GUICtrlSetFont(-1, 8, 800, 4, "MS Sans Serif")
	_GuiRoundCorners($GUI,0,0,$ROUNDES,$ROUNDES)
	$RBOX_EVENT_CLOSE = GUICtrlCreateLabel('X',$width-20,3,25,25)
	GUICtrlSetCursor($RBOX_EVENT_CLOSE,0)
	GUICtrlSetBkColor($RBOX_EVENT_CLOSE,-2)
	GUICtrlSetFont($RBOX_EVENT_CLOSE,15,800)
	GUICtrlSetColor($RBOX_EVENT_CLOSE,0x555555)
	Global $Label6 = GUICtrlCreateLabel("Niveau", 480, 50, 44, 17)
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
	GUICtrlSetFont(-1, 8, 800, 4, "MS Sans Serif")
	GUICtrlSetColor(-1, 0xFFFFFF)
	Global $Input1 = GUICtrlCreateInput("", 480, 70, 41, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
	GUICtrlSetBkColor($Input1, 0x000000)
	GUICtrlSetFont(-1, 8, 800, 4, "MS Sans Serif")
	GUICtrlSetColor(-1, 0xFFFFFF)
	Global $Label1 = GUICtrlCreateLabel("Paramètres de contrôle de compte d'utilisateur ", 32, 45, 383, 24)
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
	GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
	GUICtrlSetColor(-1, 0x999900)
	Global $Checkbox1 = GUICtrlCreateCheckbox("Niveau 0 ", 32, 290, 97, 15)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetCursor (-1, 0)
	GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
	Global $Checkbox2 = GUICtrlCreateCheckbox("  Niveau 1", 32, 220, 97, 15)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetCursor (-1, 0)
	GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
	Global $Checkbox3 = GUICtrlCreateCheckbox("  Niveau 2", 32, 150, 97, 15)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetCursor (-1, 0)
	GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
	Global $Checkbox4 = GUICtrlCreateCheckbox("  Niveau 3", 32, 80, 97, 15)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetCursor (-1, 0)
	GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
	Global $Label2 = GUICtrlCreateLabel("- M'avertir uniquement quand des programmes tentent d'apporter des modifications à mon ordinateur (ne pas estomper mon bureau > pas de voile noir, ce qui signifie aussi que lorsque c'est vous qui modifiez des paramètres Windows, vous ne serez pas averti!", 32, 244, 496, 40)
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
	Global $Label3 = GUICtrlCreateLabel("- Ne jamais m'avertir quand des programmes tentent d'installer des logiciels ou d'apporter des modifications à mon ordinateur ou que je modifie des paramètres Windows.", 32, 320, 495, 41)
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
	GUICtrlSetColor(-1, 0x000000)
	Global $Label4 = GUICtrlCreateLabel("- Par défaut. M'avertir uniquement quand des programmes tentent d'apporter des modifications à mon ordinateur.", 32, 184, 473, 25)
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
	Global $Label5 = GUICtrlCreateLabel("- Toujours m'avertir quand des programmes tentent d'installer des logiciels ou d'apporter des modifications à mon ordinateur.", 32, 112, 494, 25)
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
	GUISetState(@SW_SHOW)
	$Graphic = GUICtrlCreateGraphic (0, 0, 542, 1100)
	GradientFill($Graphic, 0, 0, 585, 383, _ArrayCreate(50,10,50), _ArrayCreate(255,255,255));
	GUICtrlSetState($Graphic,$Gui_DISABLE)
	_VERIF_NIV_UAC_RAPP()
	$Title &= " "
	Local $hTitle = GUICtrlCreateLabel($Title,0,0,$width-20,26,$SS_CENTER,$GUI_WS_EX_PARENTDRAG)
	GUICtrlSetFont($hTitle,17,400,0,"Consolas")
	GUICtrlSetBkColor($hTitle,-2)
	GUICtrlSetColor(-1, 0xFFFFFF)
	Local $Graphic = GUICtrlCreateGraphic (0,0, $width, 25)
	GUICtrlSetState($Graphic,$Gui_DISABLE)
	GradientFill($Graphic, 0, 0, $width, 30, _ArrayCreate(0,0,0), _ArrayCreate(50,10,50))
	_VERIF_NIV_UAC()
	If $show = 1 Then GUISetState(@SW_SHOW,$GUI)
	Return $GUI
EndFunc

Donc normalement si vous avez suivit les instructions vous voici avec trois fichiers sous votre répertoires UACLevel.

Image
  • Faites un clique droit et sélectionnez Compiler avec options
Image
  • Faites comme expliqué plus haut sur la sélection de la compilation et vous aurez vos deux exécutables, soit en 64 bits et 32 bits.
Image
  • Sous Scite appuyer sur la touche F5 pour exécuter le script.
Avatar du membre

Amesam Administrateur du site

Share this Post