Modification de valeur dans de registre

Fermé
BRRG Messages postés 1074 Date d'inscription lundi 31 août 2015 Statut Membre Dernière intervention 21 avril 2024 - Modifié le 8 nov. 2020 à 18:19
BRRG Messages postés 1074 Date d'inscription lundi 31 août 2015 Statut Membre Dernière intervention 21 avril 2024 - 10 nov. 2020 à 11:30
Bonjour je suis en train de créer un script qui permet de modifier une valeur dans le registre mais je ne comprends pas pourquoi rien ne se passe à son exécution.

'Source : https://vb.developpez.com/faq/vbs

Option Explicit

Dim bKey, WshShell, pKey

'*** Déclaration des variables
Dim ObjetRegedit

'*** Permet de continuer le script même s'il y a une erreur
On Error Resume Next

'*** Definition du contenu de la variable
Set ObjetRegedit = CreateObject("WScript.Shell")
Set WshShell = WScript.CreateObject("WScript.Shell")

'*** Definition du contenu de la variable "CleRegistre"
CleRegistre = WshShell.RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableUA")

'*** Lecture de la clé de registre et si la valeur est égale à "0"
'*** Action si "La clé est égale à 0" passer au rajout de la ligne dans le fichier host sinon si "La clé est égale à 1", supprimer 
'*** la clé puis créer la clé avec la valeur 0

If CleRegistre = "0" then

 '*** Suppression de la clé de registre
 Wshell.RegDelete ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableUA\")

 '*** Ecriture de la clé de registre avec ces données et son type "REG_SZ".
 WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableUA", "0", "REG_DWORD"

End if
On Error GoTo 0

'*** Destruction des objets
Set ObjetRegedit = Nothing

'*** Quitter le script
WScript.Quit




Puis-je avoir votre aide s'il vous plaît?

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
9 nov. 2020 à 07:24
Bonjour,

Avez vous essayez avec on error... en commentaire
1
BRRG Messages postés 1074 Date d'inscription lundi 31 août 2015 Statut Membre Dernière intervention 21 avril 2024 3
9 nov. 2020 à 09:24
Bonjour, j'ai essayé avec un autre valeur est le script a fonctionné, je pense que le problème vient de cette valeur (EnableUA). Il n'est pas possible de la changer via un script en vbs?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702 > BRRG Messages postés 1074 Date d'inscription lundi 31 août 2015 Statut Membre Dernière intervention 21 avril 2024
9 nov. 2020 à 12:21
Re,

Tout a fait Thierry. Avez vous mis en commentaire
 On Error Resume Next

pour EnableUA

Pourquoi le faire par vbs?
0
BRRG Messages postés 1074 Date d'inscription lundi 31 août 2015 Statut Membre Dernière intervention 21 avril 2024 3 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
9 nov. 2020 à 13:39
Bonjour, j'ai enlevé On Error Resume Next mais j'ai une erreur à la ligne 37 pour le end if.

'''' MODIFICATION VALEUR DANS LE REGISTRE ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'PAR LE REGISTRE WINDOWS = Le registre de Windows contient les informations de configuration de Windows.
'Une clé EnableUA se trouve dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\System permet d'indiquer si l'UAC est activé 'ou non. Lorsque EnableUA est à 1, l'UAC est actif, à 0 l'UAC est désactivé.

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Option Explicit

Dim bKey, WshShell, pKey

'*** Déclaration des variables
Dim ObjetRegedit

'*** Permet de continuer le script même s'il y a une erreur
'On Error Resume Next

'*** Definition du contenu de la variable
'Set ObjetRegedit = CreateObject("WScript.Shell")
'Set WshShell = WScript.CreateObject("WScript.Shell")

'*** Definition du contenu de la variable "CleRegistre"
CleRegistre = WshShell.RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableUA")

'*** Lecture de la clé de registre et si la valeur est égale à "0"
'*** Action si "La clé est égale à 0" passer au rajout de la ligne dans le fichier host sinon si "La clé est égale à 1", supprimer la clé puis créer la clé avec la valeur 0

'If CleRegistre = "1" then

'*** Suppression de la clé de registre
WshShell.RegDelete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableUA"


'*** Création des valeurs et son type "REG_DWORD".
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableUA", "0", "REG_DWORD"

End if
On Error GoTo 0

'*** Destruction des objets
Set ObjetRegedit = Nothing

'''' AJOUT VALEUR DANS HOST ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Const ForReading = 1, ForWriting = 2, ForAppending = 8, ReadOnly = 1

'Line to be appended to the hosts file
Dim hostsNewLine
hostsNewLine = " 10.8.0.1 X-DSM"

If Not WScript.Arguments.Named.Exists("elevate") Then
CreateObject("Shell.Application").ShellExecute WScript.FullName _
, WScript.ScriptFullName & " /elevate", "", "runas", 1
WScript.Quit
End If

Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell=CreateObject("WScript.Shell")
WinDir =WshShell.ExpandEnvironmentStrings("%WinDir%")

HostsFile = WinDir & "\System32\Drivers\etc\Hosts"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(HostsFile, ForReading)

Do Until objFile.AtEndOfStream
If InStr (objFile.ReadLine, hostsNewLine) <> 0 Then
WScript.Quit
End If
i = i + 1
Loop
objFile.Close

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(HostsFile)
If objFile.Attributes AND ReadOnly Then
objFile.Attributes = objFile.Attributes XOR ReadOnly
End If

Set filetxt = fso.OpenTextFile(HostsFile, ForAppending, True)
filetxt.WriteLine(vbNewLine & hostsNewLine)
filetxt.Close

'''' REINITIALISATION VALEUR DANS LE REGISTRE ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'PAR LE REGISTRE WINDOWS = Le registre de Windows contient les informations de configuration de Windows.
'Une clé EnableUA se trouve dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\System permet d'indiquer si l'UAC est activé 'ou non. Lorsque EnableUA est à 1, l'UAC est actif, à 0 l'UAC est désactivé.

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'*** Permet de continuer le script même s'il y a une erreur
'On Error Resume Next

'*** Definition du contenu de la variable
Set ObjetRegedit = CreateObject("WScript.Shell")
Set WshShell = WScript.CreateObject("WScript.Shell")

'*** Definition du contenu de la variable "CleRegistre"
CleRegistre = WshShell.RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableUA")

'*** Lecture de la clé de registre et si la valeur est égale à "0"
'*** Action si "La clé est égale à 1" passer à la suite du script sinon si "La clé est égale à 0", supprimer la clé puis créer la clé avec la valeur 1

If CleRegistre = "0" then

'*** Suppression de la clé de registre
WshShell.RegDelete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableUA"

'*** Création des valeurs et son type "REG_DWORD".
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableUA", "1", "REG_DWORD"

End if
On Error GoTo 0

'*** Destruction des objets
Set ObjetRegedit = Nothing

'*** Quitter le script
WScript.Quit




Pour vous est ce que le script permet bien de désactiver l'UAC via le registre pour ensuite rajouter une ligne dans le fichier host pour en réactiver l'UAC.


J'ai fais en vbs pour la simple raison que je me suis lancé avec depuis chose et j'ai trouvé en vbs donc maintentant je continue en vbs.
0
BRRG Messages postés 1074 Date d'inscription lundi 31 août 2015 Statut Membre Dernière intervention 21 avril 2024 3 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
9 nov. 2020 à 14:09
Est ce que pour vous il est possible de faire un script qui va mettre le script final dans le lancement automotique de GPEDIT.MSC svp ?
0
BRRG Messages postés 1074 Date d'inscription lundi 31 août 2015 Statut Membre Dernière intervention 21 avril 2024 3 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
9 nov. 2020 à 20:05
J'ai trouvé cette commande ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f

Elle fonctionne mais ce n'est pas du vbscript.
0