Laufwerkspartitionen löschen, neu anlegen und formatieren

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von TRiViUM.

    Laufwerkspartitionen löschen, neu anlegen und formatieren

    Hi liebe Community,

    ich möchte ein Programm schreiben, was folgendes automatisiert erledigen soll:
    - vorhandene Partitionen löschen
    - eine neue Partition erstellen
    - Laufwerk formatieren (format.com /Q /FS:NTFS /V:WindowsXP D:)
    - Bootloader NTLDR aufspielen (bootsect /nt52 D:)

    Das besagte Laufwerk ist ein USB-Stick.

    nun hänge ich fest, Partitionen zu löschen bzw. zu erstellen.
    Ich habe bereits eine API für die shell32.dll gefunden, allerdings nur zum formatieren...

    Ziel ist eben, dass auch der dümmste Benutzer einfach nur ein Laufwerk auswählen muss, und dann auf START klickt.
    Anschließend soll das Programm vorhandene Partitionen auf dem USB-Stick löschen, eine neu erstellen, diesen formatieren und den bootloader installieren.

    Ich würde es mir auch wünschen, wenn ich von den einzelnen Aktionen (partition löschen/ formatieren/ etc.) auch eine Rückmeldung bekommen könnte, ob der Vorgang erfolgreich war.

    Habt Ihr da noch weitere Ideen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TRiViUM“ ()

    Windows bietet ein Programm namens diskpart.exe. Damit kannst du Laufwerkspartitionen verwalten und ändern. Hier (technet.microsoft.com/de-de/library/cc766465(v=ws.10).aspx) findest du die Kommandoreferenz. Du musst dann halt mit der Process[/tt]-Klasse das Programm aufrufen.

    LG :)
    @ichduersie
    Danke schonmal für Deine Hilfe.

    Mit diskpart.exe mache ich das ganze momentan noch manuell, ist mir also bekannt.
    Nur ich hatte da Probleme beim Auswerten der Ausgabe von Diskpart.
    Dafür gibt es zwar einige Tutorials mittels der Process-Klasse, nur nicht mit dem Ergebnis, dass ich gern hätte.

    Man muss wohl Skripte schreiben, da man die einzelnen Befehle nicht als Parameter übergeben kann...
    Und ich möchte eigentlich keine Daten auf anderen Systemen schreiben, da es grundsätzlich in meiner Firma Berechtigungsprobleme geben könnte.

    TRiViUM schrieb:

    da man die einzelnen Befehle nicht als Parameter übergeben kann
    Wieso nicht? Einfach nur die richtige Überladung nehmen: msdn.microsoft.com/de-de/library/h6ak8zt5(v=vs.110).aspx

    Und den Output kannst du ja mit der StandardOutput-Eigenschaft der Process-Klasse abfangen.

    ichduersie schrieb:

    Einfach nur die richtige Überladung nehmen

    Wenn das so einfach wäre, wieso schreiben dann andere extra Skripte um den Vorgang durchzuführen?
    Ich habe selber auch schon damit experimentiert, aber es einfach nicht hinbekommen - ohne skript.

    ichduersie schrieb:

    Und den Output kannst du ja mit der StandardOutput-Eigenschaft der Process-Klasse abfangen.

    Habe ich schon mal versucht, da bekomme ich aber nicht die Rückmeldungen zurück, wie wenn ich die Befehle manuell in der cmd eingebe...

    ichduersie schrieb:

    Bitte erkläre mir das mal ganz ausführlich

    Hehe :)

    Also der Benutzer soll in dem Programm ein Laufwerk auswählen können (C:\, D:\, usw.)
    Wenn der Benutzer dann auf einen Button klickt, sollen folgende Aktionen mit dem Laufwerk durchgeführt werden:
    1. alle Partitionen löschen
    2. eine Partition erstellen
    3. Formatieren (NTFS)
    4. Bootloader installieren (NTLDR für Windows XP)

    Dazu möchte ich nach jedem Schritt wissen, ob er erfolgreich war, oder nicht.
    Optimalerweise kann das die Software mit den Windows-Boardmitteln bewältigen.
    Ok, das tut mir jetzt ganz arg leid. Ich war im Kopf gerade in einem ganz anderem Thread :D Dein Problem habe ich schon verstanden :P
    Hast du als Prozess cmd.exe mit diskpart -<argumente> als Argument gestartet, oder hast du diskpart.exe direkt gestartet?
    @TRiViUM Dererlei Sachen würde ich tunlichst dem System oder Programmen von Profis überlassen.
    Wenn Du da was versaust, muss eh das System ran. Das kann es einfach besser. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    ichduersie schrieb:

    Ich war im Kopf gerade in einem ganz anderem Thread
    Kein Problem :D

    ichduersie schrieb:

    Hast du als Prozess cmd.exe mit diskpart -<argumente> als Argument gestartet, oder hast du diskpart.exe direkt gestartet?
    Ich glaube, ich habe diskpart.exe direkt gestartet, da bei cmd.exe -diskpart ein neues cmd-Fenster geöffnet wird, bin mir nicht ganz sicher...

    RodFromGermany schrieb:

    Dererlei Sachen würde ich tunlichst dem System oder Programmen von Profis überlassen
    Mein Vorhaben soll/muss aber auch der dümmste Benutzer hinbekommen, und dem kann man eben nicht zumuten, diese Befehle manuell in die CMD einzugeben, geschweige denn in der Datenträgerverwaltung die richtigen Aktionen vorzunehmen.Wohl möglich wählt man dann einen falschen Datenträger aus etc. und dann hat man den Salat.Wenn man das alles aber sicher automatisiert hinbekommt, ist es ja schon Idiotensicher

    TRiViUM schrieb:

    Mein Vorhaben soll/muss aber auch der dümmste Benutzer hinbekommen
    Da dererlei Aufgaben nicht zum üblichen Geschehen eines Rechners / Rechnerbenutzers gehören, glaube ich doch, dass dies ein IT-Beauftragter tun sollte.
    In welchem dienstlichen / privaten Verhältnis stehst Du zu diesem Benutzer?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    TRiViUM schrieb:

    Ziel ist eben, dass auch der dümmste Benutzer einfach nur ein Laufwerk auswählen muss, und dann auf START klickt.


    Sowas ist leider nichts für DAUs. Solange das Laufwerk ausgewählt werden muss, besteht die Gefahr von Datenverlust.
    Wenn da WindowsXP auf mehrere Maschinen installiert werden soll, wäre ein Image besser geeignet.
    Gruß
    Peterfido

    Keine Unterstützung per PN!

    RodFromGermany schrieb:

    In welchem dienstlichen / privaten Verhältnis stehst Du zu diesem Benutzer?
    Es wird ein Mitarbeiter einer externen mir unbekannten Firma sein, dieser würde ggf. noch Anweisungen dazu bekommen, wie er vorgehen soll.

    peterfido schrieb:

    Solange das Laufwerk ausgewählt werden muss, besteht die Gefahr von Datenverlust.
    Das Laufwerk ist ein USB-Stick. Die nötigen Filter System.IO.DriveInfo.DriveType.Removable habe ich bereits eingefügt, sodass man nicht aus Versehen eine interne Festplatte auswählen kann. Zusätzlich werden dem Benutzer noch der Gesamt-, der belegte und der freie Speicher sowie die Bezeichnung angezeigt.

    peterfido schrieb:

    Wenn da WindowsXP auf mehrere Maschinen installiert werden soll, wäre ein Image besser geeignet.
    Windows XP soll auf dem Stick "installiert" werden, nicht auf einer Festplatte. Der Stick wird eben vorbereitet, und anschließend werden die benötigten Daten für Windows XP auf den Stick kopiert, von dem dann gebootet werden kann.

    Ich finde dass der Benutzer viel zu viel Auswahl mit den Windows-Tools hat, und dass er da auch was falsch machen kann.
    Auch, wenn man ihn eine Art Anleitung gibt.

    So ein Tool, wo man nur den Laufwerksbuchstaben auswählen muss, ggf. noch Infos zum ausgewählten Laufwerk bekommt, finde ich wesentlich Fehler-unanfälliger - sofern sicher programmiert.

    Mal nebenbei gefragt, gibt es eine Möglichkeit, Laufwerksbuchstaben den Laufwerksnummern zuzuordnen?
    In der Datenträgerverwaltung wird im unteren Teil ja nur die Beschreibung Datenträger 0, Datenträger 1 usw gegeben.
    Diese ist auch notwendig, wenn man über diskpart.exe Datenträger formatieren will.

    Genauer, ich möchte eine Zuordnung (G: = Datenträger 3) haben, wie sie in der Datenträgerverwaltung gezeigt wird:


    Edit: habe die Lösung zu meiner letzten frage HIER gefunden.

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „TRiViUM“ ()