AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Volumennamen eines Mapped Network Drives herausfinden
Thema durchsuchen
Ansicht
Themen-Optionen

Volumennamen eines Mapped Network Drives herausfinden

Ein Thema von Shadowwalker · begonnen am 23. Apr 2018 · letzter Beitrag vom 23. Apr 2018
Antwort Antwort
Seite 2 von 2     12   
Shadowwalker

Registriert seit: 23. Apr 2018
22 Beiträge
 
#11

AW: Volumennamen eines Mapped Network Drives herausfinden

  Alt 23. Apr 2018, 20:31
ExpandUNCFileName macht aus einem Pfad wie \\NAS\share etwas wie C:\Users\....\aktuelles verzeichnis\\NAS\share.

Die Lösung mit WNetGetConnection gibt mir genau das zurück was ich suche.
Lässt sich das auch auf Laufwerke aller Typen anwenden?
  Mit Zitat antworten Zitat
Benutzerbild von timog
timog

Registriert seit: 26. Sep 2006
Ort: Landkreis Oldenburg (Oldb)
117 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#12

AW: Volumennamen eines Mapped Network Drives herausfinden

  Alt 23. Apr 2018, 20:59
Lässt sich das auch auf Laufwerke aller Typen anwenden?
Welche Typen meinst Du denn?
Timo
Real Programmers are surprised when the odometers in their cars don't turn from 99999 to 9999A.
  Mit Zitat antworten Zitat
Shadowwalker

Registriert seit: 23. Apr 2018
22 Beiträge
 
#13

AW: Volumennamen eines Mapped Network Drives herausfinden

  Alt 23. Apr 2018, 20:59
Der Typ ist unwichtig. Einfach quer durch von A bis z =)

Es geht ja da drum, dass man durch alle Laufwerke gehen kann und den Anzeigenamen bekommt.
Aber wenn die Eingabe sowas wie \\NAS\files_shadow ist, sind die mir bekannten Windows-Funktionen nicht mehr arbeitsfähig.

Meine Variante / Idee, die aber einen gravierenden Nachteil hat: ich werde die Eingabe \\NAS... in keinster Weise mehr aus.

Delphi-Quellcode:
procedure GetDiskDriveLetters(List: TStringList);
var
 vDrivesSize: Cardinal;
 vDrives: array [0 .. 128] of Char;
 vDrive: PChar;
begin
 List.BeginUpdate;

 try
  List.Clear;
  vDrivesSize := GetLogicalDriveStrings(SizeOf(vDrives), vDrives);

  if vDrivesSize = 0 then
   Exit;

  vDrive := vDrives;

  while vDrive^ <> #0 do
   begin
    List.Add(StrPas(vDrive));
    Inc(vDrive, SizeOf(vDrive));
   end;
 finally
  List.EndUpdate;
 end;
end;

function GetVolumeName(const aDriveLetter: Char): string;
var
 DriveInfo: TSHFileInfo;
 Res: string;
 sl: TStringList;
 i: Integer;
begin
 sl := TStringList.Create;

 try
  GetDiskDriveLetters(sl);

  for i := 0 to sl.Count - 1 do
   begin
    if AnsiSameText(AnsiUpperCase(aDriveLetter) + ':\', AnsiUpperCase(sl.Strings[i])) then
     begin
      FillChar(DriveInfo, SizeOf(DriveInfo), 0);

      if SHGetFileInfo(PChar(aDriveLetter + ':\'), 0, DriveInfo, SizeOf(DriveInfo), SHGFI_DISPLAYNAME) <> 0 then
       Res := Trim(StringReplace(DriveInfo.szDisplayName, ' (' + Copy(aDriveLetter + ':\', 1, 2) + ')', '', [rfReplaceAll])) // Lokaler Datenträger (C:) => Lokaler Datenträger
      else
       RaiseLastOSError;

      Break;
     end;
   end;
 finally
  sl.Free;
 end;

 Result := Res;
end;


var
 LDrive: Char;
 LPathRemote: array [0 .. MAX_PATH] of Char;
 LPathLength: DWORD;
 VolumeName: string;
begin
 for LDrive := 'Ato 'Zdo
  begin
   VolumeName := GetVolumeName(LDrive);
  
   if VolumeName .... then
  end;
end;

Geändert von Shadowwalker (23. Apr 2018 um 21:40 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 10:28 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