Wie erstellt man eine Partition, ohne dass Windows einen Laufwerksbuchstaben zuweist?

8

Ich versuche, eine angeschlossene virtuelle Festplatte über die Windows-API zu initialisieren und zu partitionieren. Ich war erfolgreich mit DeviceIoControl () Wenn ich jedoch das gewünschte Laufwerkslayout anwähle, weist Windows der Partition automatisch einen Laufwerksbuchstaben zu und erscheint ein nerviges "Möchten Sie formatieren?" Dialog.

Ich beabsichtige, die Formatierung und das Mounten dieser Partition später im Programm zu handhaben, aber ich bin mir nicht sicher, wie ich dieses Verhalten stoppen kann. Ich habe versucht, RecognizedPartition auf FALSE zu setzen, aber das scheint keine Wirkung zu haben.

Relevanter Code:

%Vor%

Was kann ich tun, um die automatische Zuweisung von Laufwerkbuchstaben zu verhindern?

    
Justin ᚅᚔᚈᚄᚒᚔ 04.05.2012, 23:13
quelle

4 Antworten

2

Der einzige zuverlässige Weg, um dieses Problem zu umgehen, bestand darin, den Dienst "Shell Hardware Detection" zu stoppen, während das Volume erstellt und formatiert wurde. Dieser Ansatz ist jedoch so unklug, dass ich mich weigerte, ihn in den Code zu schreiben.

Eine andere "hackische" Option besteht darin, den Dienst starten zu lassen und dann sich selbst (oder eine ausführbare Datei "worker") in einem versteckten Fenster über CreateProcess() mit dem CREATE_NO_WINDOW Flag zu starten.

Da diese Software als Systemdienst läuft und ich den Code lieber nicht für etwas verkompliziere, das nur ein oder zwei Mal während der Lebensdauer des Systems passiert, musste ich einfach akzeptieren, dass es gelegentlich ein < em> Interaktive Dienste Erkennung Fenster erscheint für einige Momente beim Erstellen der Partitionen.

Wenn jemand eine gute Methode zum Verhindern der Formataufforderung beim programmatischen Erstellen und Formatieren eines Laufwerks entdeckt, ändere ich gerne die akzeptierte Antwort (und schulde Ihnen ein Bier).

    
Justin ᚅᚔᚈᚄᚒᚔ 08.08.2012, 14:42
quelle
0

Es ist eine Weile her, seit ich diese API benutzt habe, aber aus dem Speicher kann man das nicht. Aber es hält Sie nicht davon ab den Laufwerksbuchstaben zu entfernen Zuweisung nach der Tat.

Ich bin mir nicht sicher, ob es die Formataufforderung stoppt, obwohl ich die Partitionen bereits richtig formatiert habe, bevor ich das Disk-Layout-Update mache.

    
Shane Powell 04.05.2012 23:37
quelle
0

Ich habe gerade dieses Problem gelöst, indem ich mehrere Sekunden gewartet habe, bis das Laufwerk verfügbar war, und dann direkt eine Formatierungsaktion ausgab. Siehe meine Antwort hier .

    
swdev 26.04.2014 00:48
quelle
0

Rufus hat eine interessante Problemumgehung: Es installiert einen Fenster-Ereignis-Hook, der feststellt, "Möchten Sie dieses Laufwerk formatieren?" fragt und schließt sie sofort. Siehe Quellcode hier .

Es geht dann weiter, um nur die Partitionen zu mounten, die es interessiert, aber das ist orthogonal.

    
wjt 13.11.2017 11:32
quelle

Tags und Links