@Chris
Kurzantwort
Der Zugriff auf die Dateien erfolgt mit ShellExecute, die Pfadnamen sind
in einer
DB gespeichert mit "hart" vorgegebenen LW-Buchstaben.
Langantwort:
Öffne ich aus dem Programm heraus das Verzeichnis einer der ""Problem-Dateien" mit
ShellExecute(Application.Handle, 'explore', PChar(Directoryname), nil, nil, SW_SHOWNORMAL);
so bekomme ich als Rückgabewert
"5" - also
"Fehler beim gemeinsamen Zugriff auf eine Datei im Netz oder Fehler beim Zugriff auf eine gesperrte Datei im Netz."
Wenn ich dann aus genau dem jetzt laufenden Programm heraus einen Explorer für das EXE-Verzeichnis starte mit
ShowDirectory(ExtractFilePath(Application.ExeName))
Dann kann ich mich darin bis zum ursprünglichen Verzeicnis durchklickern
und bekomme hier auch alle Dateien angezeigt und kann diese per Doppelkklick öffnen.
Die Pfade sind wie geschildert "hart" in einer
DB gespeichert, incl. Laufwerksbuchstaben.
(Wir verwenden für einige Server Volumes fest vergebene LW-Buchstaben).
Die Rechte auf die Zieldatei sind da - sonst könnte ich sie ja nicht wie
oben geschildert im aus dem Programm heraus gestarteten Explorer anzeigen.
Für die Anzeige wird ein normales ShellExecute verwendet, zuerst wird
das Programm für die Anzeige über die FileExtension ermittelt und dieses
dann ebenfalls per ShellExecute aufgerufen. Klappt hervorragend bei
OS <= XP.
Ich verstehe einfach nicht, warum der Benutzer einmal die Rechte hat und
ein andermal die Rechte nicht hat.