[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-clonage/sources/quitte_se3/ -> quitte_se3_v0.au3 (source)

   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


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1