Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

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

11 views
Skip to first unread message

JF

unread,
Sep 29, 2008, 4:05:36 AM9/29/08
to
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?lid=1539
http://www.libellules.ch/dotclear/index.php?post/2007/07/31/2045-restorwin

Merci !

--
Salutations, Jean-François.


Gilles LAURENT [MVP]

unread,
Sep 29, 2008, 5:46:29 AM9/29/08
to
"JF" <JF@-> a écrit dans le message de
news:%23LmVoog...@TK2MSFTNGP03.phx.gbl
| 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


JF

unread,
Sep 29, 2008, 7:00:51 AM9/29/08
to
*Bonjour Gilles LAURENT [MVP] * !
<news:u6A3ChhI...@TK2MSFTNGP02.phx.gbl>

> "JF" <JF@-> a écrit dans le message de
> news:%23LmVoog...@TK2MSFTNGP03.phx.gbl
>> 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.

Vu !
http://msdn.microsoft.com/en-us/library/aa378852(VS.85).aspx


> 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 ---

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.


Gilles LAURENT [MVP]

unread,
Sep 29, 2008, 8:07:52 AM9/29/08
to
"JF" <JF@-> a écrit dans le message de
news:uq3hjKi...@TK2MSFTNGP02.phx.gbl

| 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 !

JF

unread,
Sep 29, 2008, 9:29:37 AM9/29/08
to
*Bonjour Gilles LAURENT [MVP] * !
<news:#6h8CwiI...@TK2MSFTNGP02.phx.gbl>

> "JF" <JF@-> a écrit dans le message de
> news:uq3hjKi...@TK2MSFTNGP02.phx.gbl
>> 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 !

:)
Ç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


Gilles LAURENT [MVP]

unread,
Sep 30, 2008, 5:41:31 AM9/30/08
to
"JF" <JF@-> a écrit dans le message de
news:e$y9rdjIJ...@TK2MSFTNGP03.phx.gbl

| Ç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 ---

JF

unread,
Oct 1, 2008, 12:30:38 AM10/1/08
to
*Bonjour Gilles LAURENT [MVP] * !
<news:uByA9CuI...@TK2MSFTNGP06.phx.gbl>

> "JF" <JF@-> a écrit dans le message de
> news:e$y9rdjIJ...@TK2MSFTNGP03.phx.gbl
>> Ç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.

Merci !

> 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

C'est noté, merci de l'info.

> --- 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]:)$"

Attention avec les courrielleurs, il faut afficher le texte brut pour
lire correctement la fin de la ligne ==> ] : ) $ "


> 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()

Ç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.


Gilles LAURENT [MVP]

unread,
Oct 1, 2008, 4:04:48 AM10/1/08
to
"JF" <JF@-> a écrit dans le message de
news:eEqP253I...@TK2MSFTNGP02.phx.gbl

[...]


| Ç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.

JF

unread,
Oct 1, 2008, 6:00:57 AM10/1/08
to
!
<news:eItxix5I...@TK2MSFTNGP05.phx.gbl>

> "JF" <JF@-> a écrit dans le message de
> news:eEqP253I...@TK2MSFTNGP02.phx.gbl

> [...]
>> Ç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

C'était seulement pour passer le test bien sûr.

> - La lettre de lecteur doit respecter la convention de nommage "X:"

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.

> - La lettre de lecteur ne doit pas être déjà montée

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.


> Merci pour ce retour.

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


0 new messages