XP : désactiver la surveillance d'un disque externe
Le
JF

Bonjour
Les disques externes ont tendance revenir en mode surveillance
(restauration système). La désactivation via les propriétés du système
n'est pas pratique. RestorWIN rend l'opération un peu plus facile, mais
il n'y a pas de commande.
Est-il possible de désactiver la surveillance
d'un disque amovible par script ?
L'état de la surveillance d'un disque est enregistré dans :
C:System Volume Information_restore<MachineGuid>drivetable.txt
RestorWIN
http://www.gratilog.net/xoops/modules/mydownloads/singlefile.php?lid39
http://www.libellules.ch/dotclear/index.php?post/2007/07/31/2045-restorwin
Merci !
--
Salutations, Jean-François.
Les disques externes ont tendance revenir en mode surveillance
(restauration système). La désactivation via les propriétés du système
n'est pas pratique. RestorWIN rend l'opération un peu plus facile, mais
il n'y a pas de commande.
Est-il possible de désactiver la surveillance
d'un disque amovible par script ?
L'état de la surveillance d'un disque est enregistré dans :
C:System Volume Information_restore<MachineGuid>drivetable.txt
RestorWIN
http://www.gratilog.net/xoops/modules/mydownloads/singlefile.php?lid39
http://www.libellules.ch/dotclear/index.php?post/2007/07/31/2045-restorwin
Merci !
--
Salutations, Jean-François.
news:%
| Bonjour
Bonjour,
| Les disques externes ont tendance revenir en mode surveillance
| (restauration système). La désactivation via les propriétés du système
| n'est pas pratique. RestorWIN rend l'opération un peu plus facile,
| mais il n'y a pas de commande.
|
| Est-il possible de désactiver la surveillance
| d'un disque amovible par script ?
Avec la méthode Disable de la classe WMI SystemRestore.
Par exemple, pour désactiver la surveillance du disque D
--- Coupez ici : DisableSystemRestore.vbs ---
Set oSR=GetObject("winmgmts:/root/default:SystemRestore")
oSR.Disable("D:")
--- Coupez ici : DisableSystemRestore.vbs ---
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Vu !
http://msdn.microsoft.com/en-us/library/aa378852(VS.85).aspx
Merci beaucoup !
J'ai modifié ainsi pour que le script désactive le disque amovible sur
lequel il est enregistré ==>
Set oSR=GetObject("winmgmts:/root/default:SystemRestore")
Set oFSO=CreateObject("Scripting.FileSystemObject")
Set oShell=CreateObject("Wscript.Shell")
strPath=oShell.CurrentDirectory
strDrive=oFSO.GetDriveName(strPath)
oSR.Disable(strDrive&"")
Une remarque ?
--
Salutations, Jean-François.
news:
| Merci beaucoup !
| J'ai modifié ainsi pour que le script désactive le disque amovible sur
| lequel il est enregistré ==>
|
| Set oSR=GetObject("winmgmts:/root/default:SystemRestore")
| Set oFSO=CreateObject("Scripting.FileSystemObject")
| Set oShell=CreateObject("Wscript.Shell")
| strPath=oShell.CurrentDirectory
| strDrive=oFSO.GetDriveName(strPath)
| oSR.Disable(strDrive&"")
|
| Une remarque ?
Super !
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
:)
Ça va aller très bien avec ce que j'ai fait en batch pour changer
rapidement la lettre d'un volume amovible. Je ne suis pas sûr d'arriver
à le réécrire en VBS. Ça t'inspire ?
@echo off
color 1F
set volume=%~d0
set letter=%volume:~0,1%
echo.
echo Ce volume a la lettre = %letter% set /p NewLetter=Quelle est la nouvelle lettre a attribuer au lecteur
?
echo.
echo Vous avez choisi la lettre : %NewLetter%
echo.
if %NewLetter%=="" exit
if /i %NewLetter%==%letter% goto :sameletter
if exist %NewLetter%: goto :exist
set tp=%temp%tmp.cmd
set tx=%temp%tmp.txt
>%tp% echo mountvol %volume% /L^>%tx%
>>%tp% echo mountvol %volume% /D
>>%tp% echo for /f %%%%A in (%tx%) do set lecteur=%%%%A
>>%tp% echo mountvol %NewLetter%: %%lecteur%%
>>%tp% echo del %tx%
>>%tp% echo del %tp%
cd /d %temp%
%tp%
if exist %NewLetter%: mountvol %volume% /d
@pause
goto :eof
:sameletter
echo Ce lecteur a deja la lettre %letter%
@pause
goto :eof
:exist
echo %NewLetter%: n'est pas libre
@pause
C'est très inspiré d'exemples que j'ai trouvé dans ce NG :)
Ce batch doit fonctionner depuis le lecteur, c'est la raison de ces
redirections.
--
Salutations, Jean-François
Index de la FAQ XP de Panthère Noire : www.d2i.ch/pn/az
Comportement inattendu du PC :
http://support.microsoft.com/kb/827315/fr
news:e$
| Ça va aller très bien avec ce que j'ai fait en batch pour changer
| rapidement la lettre d'un volume amovible. Je ne suis pas sûr
| d'arriver à le réécrire en VBS. Ça t'inspire ?
[...]
Ci-dessous le portage de votre script batch en VBScript. Les
vérifications essentielles sont implémentées. L'utilisateur est prompté
tant que les vérifications échouent. Le script s'interrompt lorsque
l'utilisateur clique sur le bouton "Annuler" ou alors s'il entre la même
lettre de lecteur que celle actuellement utilisée par le périphérique
amovible.
Note: J'utilise également l'outil mountvol pour la manipulation des
volumes. Il est toutefois à noter que depuis Windows 2003 / Vista, les
méthodes de la classe WMI Win32_Volume permettent d'effectuer ces
opérations.
Win32_Volume Class :
http://msdn.microsoft.com/en-us/library/aa394515(VS.85).aspx
--- Coupez ici : ChangeDriveLetter.vbs ---
Set oSh=CreateObject("WScript.Shell")
Set oFs=CreateObject("Scripting.FileSystemObject")
If WScript.Arguments.Count=0 Then
Set oRe=New RegExp: oRe.Pattern="^([aA-zZ]:)$"
sTempFolder=oFs.GetSpecialFolder(2) & ""
sCurrentDrive=oFs.GetDriveName(oSh.CurrentDirectory)
Set oExec=oSh.Exec("mountvol " & sCurrentDrive & " /l")
sCurrentVolume=Replace(oExec.StdOut.ReadLine()," ", "")
Do While True
sNewDrive=InputBox( _
"The volume is currently mounted on drive " & sCurrentDrive & _
VBCrLf & VBCrLf & _
"Please enter a new drive letter :", "Change drive letter")
If sNewDrive = "" Or sNewDrive=sCurrentDrive Then WScript.Quit()
If oRe.Test(sNewDrive) And Not oFs.DriveExists(sNewDrive) Then
oFs.CopyFile WScript.ScriptFullName, sTempFolder, True
oSh.Run sTempFolder & WScript.ScriptName & " " & _
sCurrentDrive & " " & _
sCurrentVolume & " " & _
sNewDrive, 0, False
WScript.Quit()
End If
Loop
Else
oFs.DeleteFile WScript.ScriptFullName, True
sCurrentDrive=WScript.Arguments(0)
sCurrentVolume=WScript.Arguments(1)
sNewDrive=WScript.Arguments(2)
WScript.Sleep(1000)
oSh.Run "mountvol " & sCurrentDrive & " /d", 0, True
oSh.Run "mountvol " & sNewDrive & " " & sCurrentVolume, 0, True
End If
--- Coupez ici : ChangeDriveLetter.vbs ---
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Merci !
C'est noté, merci de l'info.
Attention avec les courrielleurs, il faut afficher le texte brut pour
lire correctement la fin de la ligne ==> ] : ) $ "
Ça ne marchait pas, j'ai donc modifié ainsi :
If sNewDrive="" Then WScript.Quit()
sNewDrive=UCase(sNewDrive)
sNewDrive=sNewDrive&":"
If sNewDrive=sCurrentDrive Then WScript.Quit()
--
Salutations, Jean-François.
news:
[...]
| Ça ne marchait pas, j'ai donc modifié ainsi :
|
| If sNewDrive="" Then WScript.Quit()
| sNewDrive=UCase(sNewDrive)
| sNewDrive=sNewDrive&":"
| If sNewDrive=sCurrentDrive Then WScript.Quit()
Si la lettre de lecteur est entrée dans l'InputBox en respectant la
convention de nommage "X:" alors cela ne marche pas non plus car du coup
on se retrouve ici avec sNewDrive="X::" ;-). En fait je pense que la
condition ci-dessous est suffisante :
If sNewDrive="" Then WScript.Quit()
Car juste après nous avons :
If oRe.Test(sNewDrive) And Not oFs.DriveExists(sNewDrive) Then
- La casse n'a aucune importance
- La lettre de lecteur doit respecter la convention de nommage "X:"
- La lettre de lecteur ne doit pas être déjà montée
Merci pour ce retour.
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
C'était seulement pour passer le test bien sûr.
En entrée le script demande une lettre; c'est donc, à mon sens, au
script de corriger selon que l'utilisateur a eu l'idée ou non d'ajouter
les deux-points. Je vais ajouter un test.
Dans l'absolu il est inutile de vérifier si la lettre est déjà
utilisée. Dans le Batch je teste pour informer l'utilisateur s'il se
trompe.
M E R C I Gilles.
--
Salutations, Jean-François
FAQ XP de Panthère Noire (index) : www.d2i.ch/pn/az
Un problème à montrer ? http://fspsa.free.fr/copiecran.htm
Outil : http://fspsa.free.fr/Presse-Papier_vers_Regedit.htm