Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi GetFileVersionInfoSize und Netzwerk (https://www.delphipraxis.net/178708-getfileversioninfosize-und-netzwerk.html)

haentschman 22. Jan 2014 13:01

GetFileVersionInfoSize und Netzwerk
 
Hallo alle miteinander... 8-)

Kostellation:
EXE wird vom Client vom Netzlaufwerk gestartet. Pfad ist UNC Name. Rechte vorhanden.

Problem:
GetFileVersionInfoSize liefert 0 zurück obwohl Versionsinformationen in der EXE vorhanden sind.

Tests haben ergeben, daß GetFileVersionInfoSize hier in der Testumgebung bis ca. 3 Sek. (und das ziemlich gleichmäßig) nach dem Start der EXE benötigt um das richtige Result zu liefern. Dabei reichte schon das Programm vor den Aufruf mit einem Breakpoint für diese Zeit anzuhalten.
Auch konnte das nicht auf allen Netzlaufwerken reproduziert werden. Bei manchen ging alles wie gehabt.

Gelöst habe ich das erstmal mit einer Schleife über GetFileVersionInfoSize bis zu einem Ergebnis. Die Schleifendurchläufe habe ich mal mitgezählt. Bei Sleep(10) hatte ich immer zwischen 280 - 295 Durchläufen.

Mich würde aber mal die Ursache interessieren. :thumb:

Dalai 22. Jan 2014 13:31

AW: GetFileVersionInfoSize und Netzwerk
 
Virenscanner?

MfG Dalai

himitsu 22. Jan 2014 13:50

AW: GetFileVersionInfoSize und Netzwerk
 
Man könnte mal versuchen zu debuggen, wie diese API auf die Datei zugreift.
Und es kann auch sein, daß diese API Funktionen verwendet, welche nicht mit allen Möglichkeiten/Protokollen des UNC klar kommt.

Alternativ, könnte man die Datei auch lokal ins Tempverzeichnis kopieren und dort auslesen?

[edit]
Ordentliche Virenscanner sollten die Zugriffe entsprechend verzögern/anhalten, solange sie Diese noch abarbeiten,
und nicht "leere" Dateienzurückgeben-

haentschman 22. Jan 2014 14:19

AW: GetFileVersionInfoSize und Netzwerk
 
Danke für deine Antwort.

Eher nicht. Es war schon schwierig genug das Kundenproblem nachzuvollziehen. :) Wir konnten nur einen internen Computer finden auf dem das reproduzierbar war. Überall laufen die gleichen Scanner.

Bsp Name: \\ws100\testordner ... von Client1 Fehler, von Client2 gut
Auf einem anderen Computer z.B. \\ws200\testordner von allen Clienten gut.

Zitat:

Alternativ, könnte man die Datei auch lokal ins Tempverzeichnis kopieren und dort auslesen?
... die gestartete EXE soll ihre eigene Version lesen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:37 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