Entwickler-Ecke

Windows API - Feststellen ob Datei lokal oder im Netzwerk


mandras - So 18.03.12 01:44
Titel: Feststellen ob Datei lokal oder im Netzwerk
ich habe in Erinnerung daß eine Windows-API-Funktion existiert mit der man feststellen kann ob eine Datei, gegeben durch Pfad+Namen, lokal oder im Netzwerk ist.

Leider ist mir entfallen wie diese Funtion heißt. Kann mir diesbzgl. jemand weiterhelfen?

lmgtfy habe ich schon probiert, also bitte keine Hinweise in dieser Art. Passende Suchbegriffe wären natürlich willkommen.

Danke im Voraus,

Andreas


bummi - So 18.03.12 01:54

ExpandUNCFilename?


mandras - So 18.03.12 01:58

Das würde wenn ich es richtig verstanden habe zu folgendem führen:

Sobald ExpandUNCFilename etwas mit "\\" am Anfang zurückliefert ist klar daß es ein Netzwerk-share ist


bummi - So 18.03.12 02:06

ja, suchst Du etwas anderes?


jaenicke - So 18.03.12 03:36

Ich würde es besser direkt abfragen.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
function IsNetworkFile(const AFilename: string): Boolean;
var
  Size: LongWord;
  Dummy: array[0..1023of Byte;
begin
  Size := SizeOf(Dummy);
  Result := WNetGetUniversalName(PChar(AFilename), UNIVERSAL_NAME_INFO_LEVEL, @Dummy, Size) = NO_ERROR;
end;
// EDIT: Ja, = statt <>


mandras - So 18.03.12 14:56

Danke bummi, jaenicke!

jaenicke, es klappt wenn ich statt <> ein = verwende.

Wobei ich vorher noch prüfen muß ob die angegebene Datei überhaupt existert da die WNetGetUniversalName keinen Fehler meldet solange nur die anfänglichen Pfadangaben korrekt sind.

Das konkrete Ergebnis meiner Arbeiten werde ich unter OpenSource Units einstellen.