![]() |
Laufwerksbuchstaben ändern
Hallo,
zuerst einmal hoffe ich, daß ich meine Frage in der richtigen Rubrik eingestellt habe. Aber nun zu meinem Problem. Wie kann man von Delphi aus den Laufwerksbuchstaben eines Wechseldatenträger ändern? Gruß aus Köln Thomas |
Re: Laufwerksbuchstaben ändern
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Es gibt da 3 Funktionen, mit denen du recht einfach die Mount Points (wie die von DOS bekannten Laufwerksbuchstaben) bearbeiten kannst.
Code:
Ein bisschen frisch getippter Beispielcode. Naja is zwar C aber sollte recht leicht zu lesen sein.
GetVolumeNameForVolumeMountPoint
SetVolumeMountPoint DeleteVolumeMountPoint
Code:
Allerdings läuft dieser Code nur auf NT5 (sprich 2000) und neuer
#include<windows.h>
#include<stdio.h> int main(int argc, char **argv){ char Vol[512]; if(argc!=3) return 0; if(!GetVolumeNameForVolumeMountPoint(argv[1], Vol, 512)){ printf("Error: %i", GetLastError()); return -1; } printf("Vol: %s\n", Vol); if(!DeleteVolumeMountPoint(argv[1])){ printf("Error: %i", GetLastError()); return -1; } printf("%s Deleted\n", argv[1]); if(!SetVolumeMountPoint(argv[2], Vol)){ printf("Error mounting %s to %s: %i", Vol, argv[2], GetLastError()); return -1; } printf("mounted to %s", argv[2]); return 0; } Für mehr infos: -> MS PSDK
Code:
MfG
rmv E:\ G:\
ändert Laufwerksbuchstaben E: zu G: |
Re: Laufwerksbuchstaben ändern
Zitat:
Aber hier nen Tip ;-) ![]() |
Re: Laufwerksbuchstaben ändern
Vielen Dank schon mal für den Tipp.
Soweit ich das sehe, muß ich die Aufrufe
Delphi-Quellcode:
importieren. Das habe ich noch nie gemacht, aber mal 'ne tolle Herausforderung für's Wochenende.
GetVolumeNameForVolumeMountPoint
SetVolumeMountPoint DeleteVolumeMountPoint Gruß aus Köln Thomas |
Re: Laufwerksbuchstaben ändern
Hallo Zusammen,
ich habe heute schon mal etwas getestet und versucht die Funktion GetVolumeNameForVolumeMountPoint zu importieren.
Delphi-Quellcode:
Soweit klar. Aber wie baue ich die Funktion ein?
Function GetVolumeNameForVolumeMountPoint(
lpszVolumeMountPoint: PAnsiChar; lpszVolumeName: PAnsiChar; cchBufferLength: DWORD): Boolean; stdcall; external 'kernel32.dll' name 'GetVolumeNameForVolumeMountPointW';
Delphi-Quellcode:
Bei mir ist vn immer leer.
procedure TForm1.Button1Click(Sender: TObject);
var vmp : PAnsiChar; vn : PAnsiChar; i : Integer; begin vmp := PAnsiChar('D:\'); GetVolumeNameForVolumeMountPoint(vmp, vn, i); showmessage(string(vn)); end; Kann mir einer helfen? Gruß aus Köln Thomas |
Re: Laufwerksbuchstaben ändern
Mir fällt zuerst auf, dass Du Ansi- und Unicode-Aufrufe hast. Lass mal bei
Zitat:
Grüße, Messie |
Re: Laufwerksbuchstaben ändern
Danke Messie,
der Tipp führte genau in die richtige Richtung. Das weglassen des W führte erstmal zur Fehlermeldung, daß die DLL diese Funktion nicht enthält. Aber ein Austausch des W gegen ein A war der Bringer. :-) Gruß aus Köln Thomas |
Re: Laufwerksbuchstaben ändern
Hallo Zusammen,
mein Programm läuft soweit super - unter 2000 und XP. Nur unter Vista Home gibt es Probleme. Das Rechtemanagement verhindet die Mount-Befehle. Wenn ich das Programm über das Kontextmenü als Admin starte funktioniert es. Hat jemand 'ne Idee, wie ich das Programm normal starten kann und trotzdem das umbenennen hinbekomme? Gruß aus Köln Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz