Laufwerksbuchstaben ändern

  • Hi,

    [autoit]

    DriveSetLabel

    [/autoit]

    ist ggf nicht das was du suchst?
    Den Laufweksbuchstaben zu ändern, sagen wir mal C:\ in K:\ würde ggf einigen Programmen den Boden unter den Füssen wegziehen. Wozu brauchst du einen geänderten Laufwerksbuchstaben?
    Vielleicht hilft dir der DOS-Befehl "SUBST" weiter, um einem Pfad einen Laufwerksbuchstaben zuzuweisen.
    Andy

    • Offizieller Beitrag

    Sollte so gehen:

    [autoit]

    $oldLetter = 'D:'
    $newLetter = 'Q:'

    [/autoit][autoit][/autoit][autoit]

    $strComputer = "."
    $objWMIService = ObjGet("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")

    [/autoit][autoit][/autoit][autoit]

    $colVolumes = $objWMIService.ExecQuery _
    ("Select * from Win32_Volume Where Name = '" & $oldLetter & "\\'")

    [/autoit][autoit][/autoit][autoit]

    For $objVolume In $colVolumes
    $objVolume.DriveLetter = $newLetter
    $objVolume.Put_
    Next

    [/autoit]
  • Oder über die Registry:

    Spoiler anzeigen
    [autoit]

    $wert = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\Z:")
    RegDelete("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\Z:")
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\D:", "REG_BINARY", $wert)

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    • Offizieller Beitrag

    Hallo.

    Gibt es nicht viele Fehler wenn man einfach System Patition C: in X: ändert?

    mfg

    Wenn du es über die Registry machst, könntest du es vermutlich sogar schaffen, das Systemlaufwerk umzubenennen (nie getestet). Danach wäre aber dein System breit ;)
    Bei allen anderen Varianten ist es unmöglich die Systempartition umzubenennen, bricht mit Fehler ab.

  • Oder über die Registry:

    Spoiler anzeigen
    [autoit]

    $wert = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\Z:")
    RegDelete("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\Z:")
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\D:", "REG_BINARY", $wert)

    [/autoit]

    was wird da gemacht genau? möchte ein usb laufwerk f: auf e: ändern...

  • Beim ersten Schritt holst du dir den Wert vom USB-Laufwerk. ( F: )

    Beim zweiten löschst du das USB-Laufwerk. ( F: )

    Beim dritten fügst du es mit dem zuvor geholten Wert hinzu. ( E: )

    So müsste es für dich dann passen:

    Spoiler anzeigen
    [autoit]

    $wert = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\F:")
    RegDelete("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\F:")
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\E:", "REG_BINARY", $wert)

    [/autoit]

    greetz Blade

    Weil Denken die schwerste Arbeit ist, die es gibt, beschäftigen sich auch nur wenige damit.

  • Beim ersten Schritt holst du dir den Wert vom USB-Laufwerk. ( F: )

    Beim zweiten löschst du das USB-Laufwerk. ( F: )

    Beim dritten fügst du es mit dem zuvor geholten Wert hinzu. ( E: )

    So müsste es für dich dann passen:

    Spoiler anzeigen
    [autoit]

    $wert = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\F:")
    RegDelete("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\F:")
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\E:", "REG_BINARY", $wert)

    [/autoit]

    brauche ich danach einen neustart?

    • Offizieller Beitrag

    Es gibt auch einen anderen Weg zur Laufwerksumbenennung: Diskpart
    Hier ein Bsp. um einem USB-Stick einen anderen Lw-Buchstaben zuzuweisen. Ist sofort wirksam.
    Es gibt eine Fehlermeldung (Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.) beim Aushängen und beim Neueinhängen, die aber ignoriert werden kann.

    Spoiler anzeigen
    [autoit]

    #include <Constants.au3>
    Local $Lw_old = 'G', $Lw_new = 'F'
    Local $foo = Run("cmd", @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
    Local $sCMD = 'diskpart' & @CRLF & _
    "select Volume " & $Lw_old & @CRLF & _
    "remove" & @CRLF & _
    "assign letter=" & $Lw_new & @CRLF & _
    "exit" & @CRLF
    StdinWrite($foo, $sCMD)
    StdinWrite($foo)
    ConsoleWrite('Fertig' & @CRLF)

    [/autoit]

    Edit: Ging noch kürzer :)

  • das funktioniert bei mir nicht, es wird gefragt ob diskpart ausgeführt
    werden soll dann muss ich auf "ja" klicken, und dann kommt die
    eingabeaufforderung mit diskpart und dann passiert nichts weiter...?

    • Offizieller Beitrag

    Was hast du für ein Betriebssystem? Bei XP klappt es problemlos.
    Bei Vista und 7 weiß ich nicht.
    Durch das Erscheinen der Sicherheitsabfrage geht natürlich der Rest der Befehle verloren und somit passiert nix. Mußt also dein OS dazu bewegen dich nicht zu fragen, wenn du auf der Console Befehle verarbeiten willst.