AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Laufwerksbuchstaben ändern

Ein Thema von ThoPos · begonnen am 8. Aug 2008 · letzter Beitrag vom 19. Aug 2008
Antwort Antwort
ThoPos

Registriert seit: 30. Jun 2004
Ort: Köln
69 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Laufwerksbuchstaben ändern

  Alt 8. Aug 2008, 19:18
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
Thomas
  Mit Zitat antworten Zitat
new32

Registriert seit: 10. Mai 2005
160 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Laufwerksbuchstaben ändern

  Alt 13. Aug 2008, 17:10
Hallo!

Es gibt da 3 Funktionen, mit denen du recht einfach die Mount Points (wie die von DOS bekannten Laufwerksbuchstaben) bearbeiten kannst.

Code:
GetVolumeNameForVolumeMountPoint
SetVolumeMountPoint
DeleteVolumeMountPoint
Ein bisschen frisch getippter Beispielcode. Naja is zwar C aber sollte recht leicht zu lesen sein.
Code:
#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;
}
Allerdings läuft dieser Code nur auf NT5 (sprich 2000) und neuer

Für mehr infos: -> MS PSDK

Code:
rmv E:\ G:\
ändert Laufwerksbuchstaben E: zu G:
MfG
Angehängte Dateien
Dateityp: zip remountvol_137.zip (5,5 KB, 16x aufgerufen)
~?&/%§$§%\&?~
8)
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Laufwerksbuchstaben ändern

  Alt 13. Aug 2008, 17:34
Zitat von new32:
Hallo!

Es gibt da 3 Funktionen, mit denen du recht einfach die Mount Points (wie die von DOS bekannten Laufwerksbuchstaben) bearbeiten kannst.

Code:
GetVolumeNameForVolumeMountPoint
SetVolumeMountPoint
DeleteVolumeMountPoint
Ein bisschen frisch getippter Beispielcode. Naja is zwar C aber sollte recht leicht zu lesen sein.
Code:
#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;
}
Allerdings läuft dieser Code nur auf NT5 (sprich 2000) und neuer

Für mehr infos: -> MS PSDK

MfG
Prima im Delphi-Forum *sfg*(habs ja verstanden..aber.....?)

Aber hier nen Tip Netconnect
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
ThoPos

Registriert seit: 30. Jun 2004
Ort: Köln
69 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

Re: Laufwerksbuchstaben ändern

  Alt 13. Aug 2008, 19:10
Vielen Dank schon mal für den Tipp.

Soweit ich das sehe, muß ich die Aufrufe

Delphi-Quellcode:
GetVolumeNameForVolumeMountPoint
SetVolumeMountPoint
DeleteVolumeMountPoint
importieren. Das habe ich noch nie gemacht, aber mal 'ne tolle Herausforderung für's Wochenende.

Gruß aus Köln
Thomas
Thomas
  Mit Zitat antworten Zitat
ThoPos

Registriert seit: 30. Jun 2004
Ort: Köln
69 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: Laufwerksbuchstaben ändern

  Alt 14. Aug 2008, 20:14
Hallo Zusammen,

ich habe heute schon mal etwas getestet und versucht die Funktion GetVolumeNameForVolumeMountPoint zu importieren.

Delphi-Quellcode:
Function GetVolumeNameForVolumeMountPoint(
             lpszVolumeMountPoint: PAnsiChar;
             lpszVolumeName: PAnsiChar;
             cchBufferLength: DWORD): Boolean;
             stdcall;
             external 'kernel32.dllname 'GetVolumeNameForVolumeMountPointW';
Soweit klar. Aber wie baue ich die Funktion ein?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  vmp : PAnsiChar;
  vn : PAnsiChar;
  i : Integer;
begin
  vmp := PAnsiChar('D:\');
  GetVolumeNameForVolumeMountPoint(vmp, vn, i);
  showmessage(string(vn));
end;
Bei mir ist vn immer leer.
Kann mir einer helfen?

Gruß aus Köln
Thomas
Thomas
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Laufwerksbuchstaben ändern

  Alt 14. Aug 2008, 20:20
Mir fällt zuerst auf, dass Du Ansi- und Unicode-Aufrufe hast. Lass mal bei
Zitat:
GetVolumeNameForVolumeMountPointW
das W weg. Denn die Funktion darfst Du wahrscheinlich nicht mit PAnsiChar füttern.


Grüße, Messie
  Mit Zitat antworten Zitat
ThoPos

Registriert seit: 30. Jun 2004
Ort: Köln
69 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

Re: Laufwerksbuchstaben ändern

  Alt 14. Aug 2008, 20:30
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
Thomas
  Mit Zitat antworten Zitat
ThoPos

Registriert seit: 30. Jun 2004
Ort: Köln
69 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

Re: Laufwerksbuchstaben ändern

  Alt 19. Aug 2008, 19:34
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
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz