[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 ; Programme destiné à quitter un domaine SambaEdu3 sur des machines NT/2K/XP 2 ; (testé uniquement sous XP (y a-t-il des modifs à apporter sur les VBS dans les cas NT/2K?)) 3 ; Les opérations effectuées sont les suivantes: 4 ; - Suppression du compte 'adminse3' 5 ; - Suppression du dossier "c:\Documents and Settings\adminse3" 6 ; (pour éviter lors d'une intégration future l'apparition d'un dossier "c:\Documents and Settings\adminse3.NOMDUPOSTE") 7 ; - Suppression du dossier "c:\netinst" 8 ; - Sortie du domaine avec NETDOM 9 ; - Rejoindre le groupe de travail 'TEST' 10 ; - Reboot. 11 12 $DEFAULT_WORKGROUP = "TEST" 13 14 If @OSTYPE == "WIN32_WINDOWS" Then 15 MsgBox(0,"Information","Ce programme concerne les OS NT/2K/XP uniquement.") 16 Exit 17 Else 18 If IsAdmin() Then 19 If @UserName == "adminse3" Then 20 MsgBox(0,"Information","Ce programme ne doit pas être exécuté" & @CRLF & "en tant que 'adminse3' puisque le script" & @CRLF & "va tenter de supprimer ce compte.") 21 Exit 22 Else 23 24 ;================================================================================= 25 ;$nbmax=25 26 ; Compte des dossiers dans Documents and Settings 27 $DOSSIER="C:\Documents and Settings" 28 ; Recherche des dossiers dans $DOSSIER 29 ; (remarque: "." et ".." sont renvoyés). 30 $recherche = FileFindFirstFile($DOSSIER & "\*.*") 31 32 ; Si la recherche a renvoyé des réponses: 33 If $recherche = -1 Then 34 ; Cela ne peut pas se produire. 35 MsgBox(0, "Erreur", "Aucun fichier/dossier ne se trouve dans " & $DOSSIER) 36 EndIf 37 38 $nbmax = 1 39 While 1 40 $dossier_courant = FileFindNextFile($recherche) 41 If @error Then ExitLoop 42 $nbmax = $nbmax + 1 43 WEnd 44 ;================================================================================= 45 46 ;MsgBox(0,"INFO","$nbmax = " & $nbmax) 47 48 ; Pour tenir compte de . et .. ??? 49 $nbmax = $nbmax + 2 50 51 ;Tableau de $nbmax choix: 52 ;$nbmax=100 53 Dim $DOSSIER_TMP_HOME[$nbmax] 54 Dim $DOSSIER_HOME[$nbmax] 55 56 $DOSSIER="C:\Documents and Settings" 57 ; Recherche des dossiers dans $DOSSIER 58 ; (remarque: "." et ".." sont renvoyés). 59 $recherche = FileFindFirstFile($DOSSIER & "\*.*") 60 61 ; Si la recherche a renvoyé des réponses: 62 If $recherche = -1 Then 63 MsgBox(0, "Erreur", "Aucun fichier/dossier ne se trouve dans " & $DOSSIER) 64 ;Exit 65 EndIf 66 67 $j = 1 68 $i = 1 69 While 1 70 $DOSSIER_TMP_HOME[$i] = FileFindNextFile($recherche) 71 If @error Then ExitLoop 72 73 ;MsgBox(0,"Info",$DOSSIER_TMP_HOME[$i]) 74 If $DOSSIER_TMP_HOME[$i] == "." OR $DOSSIER_TMP_HOME[$i] == ".." OR $DOSSIER_TMP_HOME[$i] == @UserName OR $DOSSIER_TMP_HOME[$i] == "All Users" OR $DOSSIER_TMP_HOME[$i] == "Default User" OR $DOSSIER_TMP_HOME[$i] == "LocalService" OR $DOSSIER_TMP_HOME[$i] == "NetworkService" Then 75 $bidon = "On n'affiche pas." 76 Else 77 $DOSSIER_HOME[$j] = $DOSSIER_TMP_HOME[$i] 78 ;MsgBox(0,"Info","$DOSSIER_HOME[" & $j & "] = " & $DOSSIER_HOME[$j]) 79 $j = $j + 1 80 EndIf 81 $i = $i + 1 82 WEnd 83 84 ; Fin de la recherche 85 ; (Close the search handle) 86 FileClose($recherche) 87 88 $nbdossiers = $j - 1 89 90 91 92 93 ;Include constants 94 #include <GUIConstants.au3> 95 96 ;Initialize variables 97 Global $GUIWidth 98 Global $GUIHeight 99 100 $GUIWidth = 400 101 ;$GUIHeight = 330 102 $GUIHeight = 40 + $nbdossiers * 20 + 25 + 25 + 10 103 104 If $GUIHeight < 170 Then 105 $GUIHeight = 170 106 EndIf 107 108 ; Et si le nombre de dossiers est tel que la fenêtre dépasse la hauteur de l'écran? 109 ; A FAIRE: Ajouter un test. 110 111 112 113 114 $FENETRE="Quitte SambaEdu3" 115 ; Création de la fenêtre 116 GUICreate($FENETRE, $GUIWidth, $GUIHeight) 117 118 ; Affichage d'un titre: 119 $Label_info = GuiCtrlCreateLabel(" Choix des dossiers à supprimer dans 'C:\Documents and Settings'", 10, 10, 325, 20, $SS_SUNKEN) 120 121 122 $x0=20 123 $x1=35 124 ;$x2=150 125 $x2=200 126 127 $y0=42 128 $y1=40 129 130 ; ======================== 131 $Check_quitte_se3 = GUICtrlCreateCheckbox("",$x2,$y1,10,10) 132 $x3=$x2+15; 133 $Label_quitte_se3 = GuiCtrlCreateLabel("Quitter le domaine", $x3, $y1, 130, 20) 134 ControlCommand($FENETRE,"",$Check_quitte_se3,"Check","") 135 ; ======================== 136 137 $Label_WORKGROUP = GuiCtrlCreateLabel("Nom du Workgroup à rejoindre:", $x2, $y1+20, 180, 20) 138 $Champ_WORKGROUP = GUICtrlCreateInput($DEFAULT_WORKGROUP, $x2, $y1+40, 180, 20) 139 $Label_WORKGROUP_INFO = GuiCtrlCreateLabel("(15 caractères maxi parmi A-Z 0-9 et -)", $x2, $y1+65, 180, 20) 140 141 142 143 ;Tableau de $nbmax choix: 144 ;$nbmax=25 145 Dim $Check_DOSSIER[$nbmax] 146 Dim $Label_DOSSIER[$nbmax] 147 148 149 $i = 1 150 For $i = 1 To $nbdossiers 151 $Check_DOSSIER[$i] = GUICtrlCreateCheckbox("",$x0,$y0,10,10) 152 ;$Label_DOSSIER[$i] = GuiCtrlCreateLabel($DOSSIER_HOME[$i], $x1, $y1, 80, 20) 153 $Label_DOSSIER[$i] = GuiCtrlCreateLabel($DOSSIER_HOME[$i], $x1, $y1, 130, 20) 154 If $DOSSIER_HOME[$i] == "adminse3" Then 155 ControlCommand($FENETRE,"",$Check_DOSSIER[$i],"Check","") 156 EndIf 157 ;MsgBox(0,"Info","$DOSSIER_HOME[" & $i & "] = " & $DOSSIER_HOME[$i]) 158 $y0=$y1+20 159 $y1=$y0-2 160 Next 161 162 163 $y0=$y1+25 164 ;MsgBox(0,"Info","$y0=" & $y0) 165 If $y0 < 135 then 166 $y0 = 135 167 EndIf 168 169 170 171 $x=($GUIWidth-2*70-35)/2 172 173 ; Création du bouton "OK" 174 ;$OK_Btn = GUICtrlCreateButton("OK", 75, 165, 70, 25) 175 $OK_Btn = GUICtrlCreateButton("OK", $x, $y0, 70, 25) 176 177 178 $x=$x+70+35 179 180 ; Création du bouton "CANCEL" 181 ;$Cancel_Btn = GUICtrlCreateButton("Cancel", 165, 165, 70, 25) 182 $Cancel_Btn = GUICtrlCreateButton("Cancel", $x, $y0, 70, 25) 183 184 185 186 187 ; On rend la fenêtre visible (modification de statut) 188 GUISetState(@SW_SHOW) 189 190 ; On fait une boucle jusqu'à ce que: 191 ; - l'utilisateur presse ESC 192 ; - l'utilisateur presse ALT+F4 193 ; - l'utilisateur clique sur le bouton de fermeture de la fenêtre 194 While 1 195 ; Après chaque boucle, on contrôle si l'utilisateur a cliqué sur quelque chose 196 $msg = GUIGetMsg() 197 198 Select 199 ; On teste si l'utilisateur a cliqué sur le bouton de fermeture 200 Case $msg = $GUI_EVENT_CLOSE 201 ; On détruit la fenêtre et ses contrôles 202 GUIDelete() 203 ; Et on quitte le script 204 Exit 205 206 ; On teste si l'utilisateur a cliqué sur le bouton OK 207 Case $msg = $OK_Btn 208 209 $quitte_domaine=GUICtrlRead($Check_quitte_se3) 210 211 $DOSSIER_TMP = "C:\tmp" 212 DirCreate($DOSSIER_TMP) 213 $FICH = FileOpen($DOSSIER_TMP & "\quitte_se3.bat",2) 214 If $quitte_domaine == 1 Then 215 FileWriteLine($FICH,"cd " & @ScriptDir & "\outils" & @CRLF) 216 FileWriteLine($FICH,"call suppr_adminse3.vbs" & @CRLF) 217 EndIf 218 219 ;======================================================= 220 ; Récupération du contenu des champs de formulaire 221 222 For $i = 1 To $nbdossiers 223 $suppr_ou_pas = GUICtrlRead($Check_DOSSIER[$i]) 224 If $suppr_ou_pas == 1 Then 225 FileWriteLine($FICH,"rmdir ""c:\Documents and Settings\" & $DOSSIER_HOME[$i] & """ /q /s" & @CRLF) 226 EndIf 227 Next 228 229 If $quitte_domaine == 1 Then 230 FileWriteLine($FICH,"rmdir ""c:\netinst"" /q /s" & @CRLF) 231 232 ;FileWriteLine($FICH,"Set sCurrentName=%COMPUTERNAME%" & @CRLF) 233 ;FileWriteLine($FICH,"Set sDomainOld=SAMBAEDU3" & @CRLF) 234 ;FileWriteLine($FICH,"NETDOM.EXE REMOVE %sCurrentName% /D:%sDomainOld%" & @CRLF) 235 EndIf 236 237 $NOM_WORKGROUP = GUICtrlRead($Champ_WORKGROUP) 238 If $NOM_WORKGROUP == "" Then 239 ; On ne fait rien 240 $bidon="oui" 241 Else 242 FileWriteLine($FICH,"cd " & @ScriptDir & "\outils" & @CRLF) 243 If StringIsAlNum(StringReplace(StringReplace($NOM_WORKGROUP,"-",""),"_","")) AND StringLen($NOM_WORKGROUP)<16 Then 244 FileWriteLine($FICH,"call rejoin_workgrp2.vbs " & $NOM_WORKGROUP & @CRLF) 245 Else 246 FileWriteLine($FICH,"call rejoin_workgrp2.vbs " & $DEFAULT_WORKGROUP & @CRLF) 247 EndIf 248 249 ; Faire rebooter l'OS: 250 FileWriteLine($FICH,"call reboot.vbs" & @CRLF) 251 EndIf 252 253 ;FileWriteLine($FICH,"" & @CRLF) 254 255 FileClose($FICH) 256 257 RunWait($DOSSIER_TMP & "\quitte_se3.bat") 258 259 ; La suppression ne fonctionne pas. 260 ; Le reboot est précédé d'une fermeture des applis en cours... 261 ;FileRecycle($DOSSIER_TMP & "\quitte_se3.bat") 262 ;FileRecycleEmpty() 263 264 GUIDelete() 265 ExitLoop 266 267 268 ; On teste si l'utilisateur a cliqué sur le bouton CANCEL 269 Case $msg = $Cancel_Btn 270 MsgBox(64, "Abandon!", "Vous avez souhaité abandonner l'opération.") 271 GUIDelete() 272 Exit 273 EndSelect 274 WEnd 275 EndIf 276 Else 277 MsgBox(0,"Information","Ce programme doit être exécuté" & @CRLF & "avec les droits administrateur.") 278 Exit 279 EndIf 280 EndIf 281 282 Exit
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |