Bonjour,

Je souhaite déconnecter automatiquement un périphérique amovible via un VBScript dans Windows 7.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2" )
Set colItems = objWMIService.ExecQuery _
    ("Select * From Win32_Volume Where Name = 'D:\\'")
 
intCount = colItems.Count
 
If intCount <> 0 Then
	For Each objItem in colItems
		deco = MsgBox("Un périphérique amovible utilise la lettre D. Celui-ci doit être déconnecté avant la poursuite de l'opération. Voulez-vous le déconnecter maintenant ?", vbYesNo, "Périphérique amovible")
		If  deco = vbYes Then
                    objItem.Dismount(True, True)
                End If
	Next
End If
Le problème avec ce code c'est qu'il ne fonctionne pas sur Windows 7.

J'ai donc essayé de faire ça autrement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2" )
Set colItems = objWMIService.ExecQuery _
    ("Select * From Win32_Volume Where Name = 'D:\\'")
 
intCount = colItems.Count
 
If intCount <> 0 Then
	For Each objItem in colItems
		deco = MsgBox("Un périphérique amovible utilise la lettre D. Celui-ci doit être déconnecté avant la poursuite de l'opération. Voulez-vous le déconnecter maintenant ?", vbYesNo, "Périphérique amovible")
		If  deco = vbYes Then
			Set WshShell = WScript.CreateObject("WScript.Shell")
			intReturn = WshShell.Run("rundll32.exe shell32.dll,Control_RunDLL hotplug.dll")
		End If
	Next
End If
Ce code affiche la fenêtre "Retirer le périphérique en toute sécurité". Là je sélectionne le périphérique à déconnecter. Mais quand j'essaye de déconnecter, il m'affiche le message : "Le périphérique JetFlash...n'est pas amovible et ne peut être déconnecté."

Par contre si j'essaye de déconnecter ce périphérique en passant par le barre de notification, ça marche.

Je ne vois pas d'où peut venir le problème.

Merci d'avance pour votre aide.