Remontées des lecteurs réseaux avec VBScript
BRRG Messages postés 1129 Date d'inscription Statut Membre Dernière intervention -
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Description : Le VBScript permet le montage en local et à distance via un VPN des lecteurs réseaux connectés avec un nom compréhensible au NAS Synology ' '
' Auteur : BARRANGER Guillaume '
' Création le : 12 Novembre 2020 '
' Dernière Modification le : '
' '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
' DESACTIVATION DE L'UAC '
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
Option Explicit
'---- Déclaration des variables -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Dim ObjetRegedit, CleRegistre, WshShell, ObjetNetwork, objNetwork, run, shl, oProcess, hostsNewLine, hostsNewLineLocal, fso, WinDir, HostsFile, objFSO, objFile, filetxt, x, varUser, varPassword, bKey, pKey, WSHNetwork
'---- Definition du contenu de la variable --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Set ObjetRegedit = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
set shl = createobject("wscript.shell")
'Set WshShell = WScript.CreateObject("WScript.Shell")
'---- Execution des droits administrateurs --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
If Not WScript.Arguments.Named.Exists("elevate") Then
CreateObject("Shell.Application").ShellExecute WScript.FullName _
, WScript.ScriptFullName & " /elevate", "", "runas", 1
End If
'---- Récupération du contenu de la clef, placement dans la variable "CleRegistre" ----------------------------------------------------------------------------------------------------------------------------------------
CleRegistre = ObjetRegedit.RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA")
'---- Lecture de la clé de registre. Si la valeur est égale à 1 tout est correct sinon la clé qui est égale à 0 doit être supprimée puis créée avec la valeur 1.
If TypeName(CleRegistre) = "Empty" Then
Else
If CleRegistre = "1" then'
'---- Suppression de la clé de registre
shl.run "cmd /c REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 1 /f"
'---- Création des valeurs et son type "REG_DWORD".
shl.run "cmd /c REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f"
End If
End if
msgbox "Coupure1"
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
' AJOUTER DANS LE FICHIER HOSTS '
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
Const ForReading = 1, ForWriting = 2, ForAppending = 8, ReadOnly = 1
msgbox "Coupure2"
'---- Ajout des lignes dans le fichier hosts ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
hostsNewLine = " 10.8.0.1 xx-DSM"
hostsNewLineLocal = " 172.16.X;X XX-DSM"
'msgbox "Coupure2.1"
'---- Modificatication du fichier hosts -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell=CreateObject("WScript.Shell")
WinDir =WshShell.ExpandEnvironmentStrings("%WinDir%")
'msgbox "Coupure2.2"
'----
HostsFile = WinDir & "\System32\Drivers\etc\Hosts"
msgbox "Coupure3"
'----
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(HostsFile, ForReading)
msgbox "Coupure4"
'----
Do Until objFile.AtEndOfStream
If InStr (objFile.ReadLine, hostsNewLine) <> 0 Then
'WScript.Quit
End If
Loop
'objFile.Close
msgbox "Coupure5"
'----
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(HostsFile)
If objFile.Attributes AND ReadOnly Then
objFile.Attributes = objFile.Attributes XOR ReadOnly
End If
'---- Execution des droits administrateurs --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'If Not WScript.Arguments.Named.Exists("elevate") Then
' CreateObject("Shell.Application").ShellExecute WScript.FullName _
' , WScript.ScriptFullName & " /elevate", "", "runas", 1
' WScript.Quit
'End If
'----
Set filetxt = fso.OpenTextFile(HostsFile, ForAppending, True)
filetxt.WriteLine(vbNewLine & hostsNewLine)
filetxt.WriteLine(vbNewLine & hostsNewLineLocal)
filetxt.Close
'---- Destruction des objets ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Set ObjetRegedit = Nothing
'---- Quitter le script ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'WScript.Quit
msgbox "Coupure6"
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
' ACTIVATION DE L'UAC '
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
msgbox "Coupure7"
'---- Definition du contenu de la variable --------------------------------------------------------------------------------------------------------------------------------------------------------------------
Set ObjetRegedit = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
set shl = createobject("wscript.shell")
Set WshShell = WScript.CreateObject("WScript.Shell")
msgbox "Coupure8"
'---- Execution des droits administrateurs --------------------------------------------------------------------------------------------------------------------------------------------------------------------
If Not WScript.Arguments.Named.Exists("elevate") Then
CreateObject("Shell.Application").ShellExecute WScript.FullName _
, WScript.ScriptFullName & " /elevate", "", "runas", 1
WScript.Quit
End If
msgbox "Coupure9"
'---- Récupération du contenu de la clef, placement dans la variable "CleRegistre" ---------------------------------------------------------------------------------------------------
CleRegistre = ObjetRegedit.RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA")
'---- Lecture de la clé de registre. Si la valeur est égale à 0 alors le rajout de la ligne dans le fichier host est à effectuer sinon la clé qui est égale à 1 doit être supprimée --
'---- puis créée avec la valeur 0. ---------------------------------------------------------------------------------------------------------------------------------------------------
msgbox "Coupure10"
If TypeName(CleRegistre) = "Empty" Then
'MsgBox "Clef registre inexistante"
Else
'MsgBox "Valeur de CleRegistre " & CleRegistre
If CleRegistre = "0" then
msgbox "Coupure11"
'---- Suppression de la clé de registre ------------------------------------------------------------------------------------------------------------------------------------------
shl.run "cmd /c REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f"
'---- Création des valeurs et son type "REG_DWORD" ---------------------------------------------------------------------------------------------------------------------------
shl.run "cmd /c REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 1 /f"
msgbox "Coupure12"
' MsgBox "Je suis bien passé dans le If de CleRegistre = 0, passage à valeur 1 FAIT"
' Else
' MsgBox "Je suis bien passé dans le If de CleRegistre = 0, donc pas de modification"
End If
End if
msgbox "Coupure13"
'---- Destruction des objets ---------------------------------------------------------------------------------------------------------------------------------------------------------
Set ObjetRegedit = Nothing
'WScript.Quit
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
' RENOMMAGE DES LECTEURS RESEAUX '
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
Set WshShell = WScript.CreateObject("WScript.Shell")
msgbox "Coupure14"
Set WshShell = CreateObject("WScript.Shell")
pkey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##XX-DSM#Autre\_LabelFromReg"
WshShell.RegWrite pKey, "Autre"
pkey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##XX-DSM#Cours\_LabelFromReg"
WshShell.RegWrite pKey, "Cours"
pkey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##XX-DSM#Documents\_LabelFromReg"
WshShell.RegWrite pKey, "Documents"
pkey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##XX-DSM#Films_Series_Dessins-Animes\_LabelFromReg"
WshShell.RegWrite pKey, "Films_Series_Dessins-Animes"
pkey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##XX-DSM#Images\_LabelFromReg"
WshShell.RegWrite pKey, "Images"
pkey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##XX-DSM#Logiciels\_LabelFromReg"
WshShell.RegWrite pKey, "Logiciels"
pkey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##XX-DSM#Musiques\_LabelFromReg"
WshShell.RegWrite pKey, "Musiques"
pkey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##XX-DSM#Photos\_LabelFromReg"
WshShell.RegWrite pKey, "Photos"
pkey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##XX-DSM#Pieces officielles\_LabelFromReg"
WshShell.RegWrite pKey, "Pieces officielles"
pkey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##XX-DSM#Videos\_LabelFromReg"
WshShell.RegWrite pKey, "Videos"
'---- Destruction des objets ------------------------------------------------------------------------------------------------------------------------------------------
Set ObjetRegedit = Nothing
'---- Quitter le script ----------------------------------------------------------------------------------------------------------------------------------------------
'WScript.Quit
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
' MONTAGE ET CONNEXION DES LECTEURS RESEAUX '
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------'
'/!\ PROBLEME :!\
msgbox "Coupure15"
'---- Informations de connexion à la session -----------------------------------------------------------------------------------------------------------------------------------------
varUser = "XX"
varPassword = "XX!"
'---- Definition du contenu de la variable -------------------------------------------------------------------------------------------------------------------------------------------
Set WSHNetwork = WScript.CreateObject("WScript.Network")
'*** Permet de continuer le script même s'il y a une erreur
msgbox "Coupure16"
'---- REMONTEES DES LECTEURS RESEAUX -------------------------------------------------------------------------------------------------------------------------------------------------
WSHNetwork.MapNetworkDrive "Q:" , "\\XX-DSM\Autre", False, varUser, varPassword
msgbox "Coupure17"
'On Error GoTo 0
'msgbox "Coupure1."
'*** Destruction des objets
'Set ObjetNetwork = Nothing
'msgbox "Coupure1."
'WScript.Quit
- Remontées des lecteurs réseaux avec VBScript
- Entrée dans le réseau des pic ✓ - Forum Laposte
- Défragmenter et optimiser les lecteurs - Guide
- Que signifie ''Votre colis est arrivé sur son site de distribution'' ? ✓ - Forum Consommation & Internet
- Matthias utilise les réseaux sociaux. que doit-il faire dans chacune des situations suivantes - Forum Mail
- Revue-reseaux-2009-numero153-page-55 - Forum Microsoft Edge / Internet Explorer
1 réponse
Le fil porte sur un script VBScript qui tente de monter des lecteurs réseau et de modifier l’UAC via EnableLUA, mais des utilisateurs constatent des dysfonctionnements et des ambiguïtés d’exécution. Plusieurs échanges portent sur l’élévation des droits administrateurs, la manipulation du registre EnableLUA et les msgbox qui apparaissent, ainsi que sur les liens vers des versions « fonctionnelle » et « non fonctionnelle » du script. Des échanges demandent d’indiquer précisément les numéros de ligne et les parties concernées par les droits admin et la désactivation/activation de l’UAC, et d’éviter les reformulations vagues. En parallèle, des détails techniques évoquent le montage et la connexion des lecteurs réseau via WSHNetwork et des risques liés à la modification du fichier hosts et à l’élévation permanente.
peux-tu montrer un exemple plus simple et plus court?
"alors que non": comment vérifies-tu que non?
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------' ' DESACTIVATION DE L'UAC ' '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------' Option Explicit '---- Déclaration des variables ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Dim ObjetRegedit, CleRegistre, WshShell, ObjetNetwork, objNetwork, run, shl, oProcess, hostsNewLine, hostsNewLineLocal, fso, WinDir, HostsFile, objFSO, objFile, filetxt, x, varUser, varPassword, bKey, pKey, WSHNetwork '---- Definition du contenu de la variable -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Set ObjetRegedit = CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") set shl = createobject("wscript.shell") 'Set WshShell = WScript.CreateObject("WScript.Shell") '---- Execution des droits administrateurs -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- If Not WScript.Arguments.Named.Exists("elevate") Then CreateObject("Shell.Application").ShellExecute WScript.FullName _ , WScript.ScriptFullName & " /elevate", "", "runas", 1 End If '---- Récupération du contenu de la clef, placement dans la variable "CleRegistre" ---------------------------------------------------------------------------------------------------------------------------------------- CleRegistre = ObjetRegedit.RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA") '---- Lecture de la clé de registre. Si la valeur est égale à 1 tout est correct sinon la clé qui est égale à 0 doit être supprimée puis créée avec la valeur 1. If TypeName(CleRegistre) = "Empty" Then Else If CleRegistre = "1" then' '---- Suppression de la clé de registre shl.run "cmd /c REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 1 /f" '---- Création des valeurs et son type "REG_DWORD". shl.run "cmd /c REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f" End If End if msgbox "Coupure1" '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------' ' AJOUTER DANS LE FICHIER HOSTS ' '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------' Const ForReading = 1, ForWriting = 2, ForAppending = 8, ReadOnly = 1 msgbox "Coupure2" '---- Ajout des lignes dans le fichier hosts ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ hostsNewLine = " 10.8.0.1 XX-DSM" hostsNewLineLocal = " 172.16.XX.XXX XX-DSM" 'msgbox "Coupure2.1" '---- Modificatication du fichier hosts ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Set fso = CreateObject("Scripting.FileSystemObject") Set WshShell=CreateObject("WScript.Shell") WinDir =WshShell.ExpandEnvironmentStrings("%WinDir%") 'msgbox "Coupure2.2" '---- HostsFile = WinDir & "\System32\Drivers\etc\Hosts" msgbox "Coupure3" '---- Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile(HostsFile, ForReading) msgbox "Coupure4" '---- Do Until objFile.AtEndOfStream If InStr (objFile.ReadLine, hostsNewLine) <> 0 Then 'WScript.Quit End If Loop 'objFile.Close msgbox "Coupure5" '---- Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.GetFile(HostsFile) If objFile.Attributes AND ReadOnly Then objFile.Attributes = objFile.Attributes XOR ReadOnly End If '---- Execution des droits administrateurs -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 'If Not WScript.Arguments.Named.Exists("elevate") Then ' CreateObject("Shell.Application").ShellExecute WScript.FullName _ ' , WScript.ScriptFullName & " /elevate", "", "runas", 1 ' WScript.Quit 'End If '---- Set filetxt = fso.OpenTextFile(HostsFile, ForAppending, True) filetxt.WriteLine(vbNewLine & hostsNewLine) filetxt.WriteLine(vbNewLine & hostsNewLineLocal) filetxt.Close '---- Destruction des objets ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Set ObjetRegedit = Nothing '---- Quitter le script --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 'WScript.Quit msgbox "Coupure6" '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------' ' ACTIVATION DE L'UAC ' '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------' msgbox "Coupure7" '---- Definition du contenu de la variable -------------------------------------------------------------------------------------------------------------------------------------------------------------------- Set ObjetRegedit = CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") set shl = createobject("wscript.shell") Set WshShell = WScript.CreateObject("WScript.Shell") msgbox "Coupure8" '---- Execution des droits administrateurs -------------------------------------------------------------------------------------------------------------------------------------------------------------------- If Not WScript.Arguments.Named.Exists("elevate") Then CreateObject("Shell.Application").ShellExecute WScript.FullName _ , WScript.ScriptFullName & " /elevate", "", "runas", 1 WScript.Quit End If msgbox "Coupure9" '---- Récupération du contenu de la clef, placement dans la variable "CleRegistre" --------------------------------------------------------------------------------------------------- CleRegistre = ObjetRegedit.RegRead ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA") '---- Lecture de la clé de registre. Si la valeur est égale à 0 alors le rajout de la ligne dans le fichier host est à effectuer sinon la clé qui est égale à 1 doit être supprimée -- '---- puis créée avec la valeur 0. --------------------------------------------------------------------------------------------------------------------------------------------------- msgbox "Coupure10" If TypeName(CleRegistre) = "Empty" Then 'MsgBox "Clef registre inexistante" Else 'MsgBox "Valeur de CleRegistre " & CleRegistre If CleRegistre = "0" then msgbox "Coupure11" '---- Suppression de la clé de registre ------------------------------------------------------------------------------------------------------------------------------------------ shl.run "cmd /c REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f" '---- Création des valeurs et son type "REG_DWORD" --------------------------------------------------------------------------------------------------------------------------- shl.run "cmd /c REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 1 /f" msgbox "Coupure12" ' MsgBox "Je suis bien passé dans le If de CleRegistre = 0, passage à valeur 1 FAIT" ' Else ' MsgBox "Je suis bien passé dans le If de CleRegistre = 0, donc pas de modification" End If End if msgbox "Coupure13" '---- Destruction des objets --------------------------------------------------------------------------------------------------------------------------------------------------------- Set ObjetRegedit = Nothing 'WScript.Quit '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------' ' RENOMMAGE DES LECTEURS RESEAUX ' '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------' Set WshShell = WScript.CreateObject("WScript.Shell") msgbox "Coupure14" Set WshShell = CreateObject("WScript.Shell") pkey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##XX-DSM#Autre\_LabelFromReg" WshShell.RegWrite pKey, "Autre" '---- Destruction des objets ------------------------------------------------------------------------------------------------------------------------------------------ Set ObjetRegedit = Nothing '---- Quitter le script ---------------------------------------------------------------------------------------------------------------------------------------------- 'WScript.Quit '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------' ' MONTAGE ET CONNEXION DES LECTEURS RESEAUX ' '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------' '/!\ PROBLEME :!\ msgbox "Coupure15" '---- Informations de connexion à la session ----------------------------------------------------------------------------------------------------------------------------------------- varUser = "XX" varPassword = "XX!" '---- Definition du contenu de la variable ------------------------------------------------------------------------------------------------------------------------------------------- Set WSHNetwork = WScript.CreateObject("WScript.Network") '*** Permet de continuer le script même s'il y a une erreur msgbox "Coupure16" '---- REMONTEES DES LECTEURS RESEAUX ------------------------------------------------------------------------------------------------------------------------------------------------- WSHNetwork.MapNetworkDrive "Q:" , "\\XX-DSM\Autre", False, varUser, varPassword msgbox "Coupure17"quand le problème a disparu, montre la version sans le problème et la version juste avant.
-> Désactivation de l'UAC seul = J'ai le message d'erreur qui s'affiche mais les remontées se font.
-> Ajout dans le fichier hosts seul = J'ai le message d'erreur qui s'affiche mais les remontées se font.
-> Activation de l'UAC seul = J'ai le message d'erreur qui s'affiche mais les remontées se font pas.
-> Renommage des lecteurs seul = Je n'ai pas le message d'erreur qui s'affiche et les remontées se font.