1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
une solution possible en utilisant WMI :
// énumération des lettres de lecteurs USB avec média présent par J.P - janvier 2011
sList est une chaîne
oScript est un objet Automation "MSScriptControl.ScriptControl"
// chaine qui représente le code VBSCRIPT
sScriptVBS est une chaîne = [
Function ChercheLettresLecteursUSB()
' ce script renvoie une liste des lettres de lecteurs USB avec média présent ( normalement )
Dim objWMI, colDiskDrives, colDiskPartitions,colLogicalDisks,sInfo
strComputer = "." ' use "." for local computer
Set objWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer _
& "\root\cimv2")
Set colDiskDrives = objWMI.ExecQuery _
("Select DeviceID from Win32_DiskDrive WHERE InterfaceType='USB'")
For Each objDiskDrive In colDiskDrives
strDeviceID = objDiskDrive.DeviceID
strEscapedDeviceID = Replace(strDeviceID, "\", "\\")
Set colDiskPartitions = objWMI.ExecQuery _
("ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" _
& strEscapedDeviceID & """} WHERE " _
& "AssocClass = Win32_DiskDriveToDiskPartition")
For Each objDiskPartition In colDiskPartitions
Set colLogicalDisks = objWMI.ExecQuery _
("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & _
objDiskPartition.DeviceID & """} WHERE " & _
"AssocClass = Win32_LogicalDiskToPartition")
For Each objLogicalDisk In colLogicalDisks
sInfo = sinfo & objLogicalDisk.DeviceID & Chr(13) & Chr(10)
Next
Next
Next
ChercheLettresLecteursUSB = sinfo
End Function
]
QUAND EXCEPTION DANS
oScript>>Language("VBScript")
oScript>>Reset
oScript>>AddCode(sScriptVBS)
oScript>>Timeout(-1) //pas de timeout
sList = oScript>>Run("ChercheLettresLecteursUSB") //Appel
// le resultat est dans sList
Info("les médias USB se trouvent en : " + RC + sList)
FAIRE
Erreur("Erreur execution WMI",ExceptionInfo(errInfo))
ExceptionActive()
RENVOYER "Erreur WMI"
FIN
|
Partager