Hab keine Ahnung ob die GUD variabel ist oder nicht, aber eher schon, denn sonst hättest du wahrscheinlich diese Probleme nicht.
Ich habe es versucht irgendwie abzufangen, und außerdem hab ich das ganze in schöne Funktionen gepackt!
POST 500 ![]()
Spoiler anzeigen
$x = '\\?\Volume{0b5a276f-5ff8-11dd-8265-806d6172696f}'
$z = '\\?\Volume{0b5a2770-5ff8-11dd-8265-806d6172696f}'
$Drive_x = 'x:'
$Drive_z = 'z:'
Local $aGUID[1]
For $i = 70 To 90 ; von F bis Z
$j = 0
If DriveGetType(Chr($i)&':') = 'CDROM' Then
$aGUID[$j] = _Unmount_Drive(Chr($i) & ':') ;alle CDROM-Laufwerke von F bis Z unmounten
$j +=1
ReDim $aGUID[$j+1]
EndIf
Next
If $aGUID[0] <> $x And $aGUID[0] <> $y Then
$x = $aGUID[0]
$y = $aGUID[1]
ElseIf $aGUID[1] <> $x And $aGUID[1] <> $y Then
$x = $aGUID[1]
$y = $aGUID[0]
EndIf
_Mount_Drive($Drive_x, $x)
_Mount_Drive($Drive_z, $z)
Func _FindGUID($Drive)
Local Const $DevList = 'HKLM\SYSTEM\MountedDevices'
Local $i = 0
Do
If RegRead($DevList, '\DosDevices\' & $Drive) = RegRead($DevList, RegEnumVal($DevList, $i)) Then
Return StringReplace(RegEnumVal($DevList, $i), '\??\', '\\?\', 1)
EndIf
$i += 1
Until 0
EndFunc ;==>_FindGUID
Func _Unmount_Drive($Drive)
$GUID = _FindGUID($Drive)
$s_cmd = "mountvol " & $Drive & " /D"
RunWait(@ComSpec & " /c " & $s_cmd, "", @SW_HIDE)
Return $GUID
EndFunc ;==>_Unmount_Drive
Func _Mount_Drive($Drive, $GUID)
If DriveGetType($Drive) = "" Then
$s_cmd = "mountvol " & $Drive & " " & $GUID
RunWait(@ComSpec & " /c " & $s_cmd, "", @SW_HIDE)
Return 0
Else
Return 1
EndIf
EndFunc ;==>_Mount_Drive
Gute Nacht!