Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Windows8 und Delphi-Applikation: FileExists liefert false für eine Datei auf einem Netzlaufwerk

185 views
Skip to first unread message

Stefan M. Huber

unread,
Feb 6, 2013, 6:43:10 AM2/6/13
to
Grüß euch!

Ich habe einen Kunden mit 4 Windows8 Computern. UAC ist überall aus. Netzlaufwerke wurden verbunden. Es gibt eine Datei Y:\test.pdf und eine Kopie davon auf D:\test.pdf

in unserem Programm kann man einfach einen Pfadnamen eingeben und der wird ausgeführt, wenn das File exisitert.

Die Funktion FilExists(AFilename) liefert uns ein false zurück, wenn ich es auf Y:\test.pdf ansetze, es geht aber beim anderen Laufwerk. Auf der Kommandozeile funktioniert sowohl

start D:\test.pdf

als auch

start Y:\test.pdf

Das Netzlaufwerk wird mit keinen besonderen Benutzername/Passwort-Kombis verbunden.

Auf 2 Computern geht dasselbe Programm mit denselben Umständen jedoch. Hat jemand eine Idee?

Stefan

Soeren Muehlbauer

unread,
Feb 6, 2013, 7:19:29 AM2/6/13
to
Hi,

> Die Funktion FilExists(AFilename) liefert uns ein false zurᅵck, wenn ich
> es auf Y:\test.pdf ansetze, es geht aber beim anderen Laufwerk. Auf der
> Kommandozeile funktioniert sowohl

Welche Delphi-Version?

Sᅵren.

Stefan M. Huber

unread,
Feb 6, 2013, 8:18:12 AM2/6/13
to
Am 06.02.2013, 13:19 Uhr, schrieb Soeren Muehlbauer <soer...@gmx.de>:

> Hi,
>
>> Die Funktion FilExists(AFilename) liefert uns ein false zurück, wenn ich
>> es auf Y:\test.pdf ansetze, es geht aber beim anderen Laufwerk. Auf der
>> Kommandozeile funktioniert sowohl
>
> Welche Delphi-Version?

D2010.

Stefan Graf

unread,
Feb 6, 2013, 8:39:23 AM2/6/13
to
Am 06.02.2013 12:43, schrieb Stefan M. Huber:
> Grᅵᅵ euch!
>
> Ich habe einen Kunden mit 4 Windows8 Computern. UAC ist ᅵberall aus.
> Netzlaufwerke wurden verbunden. Es gibt eine Datei Y:\test.pdf und
> eine Kopie davon auf D:\test.pdf
>
> in unserem Programm kann man einfach einen Pfadnamen eingeben und der
> wird ausgefᅵhrt, wenn das File exisitert.
>
> Die Funktion FilExists(AFilename) liefert uns ein false zurᅵck, wenn
> ich es auf Y:\test.pdf ansetze, es geht aber beim anderen Laufwerk.
> Auf der Kommandozeile funktioniert sowohl
>
> start D:\test.pdf
>
> als auch
>
> start Y:\test.pdf
>
> Das Netzlaufwerk wird mit keinen besonderen
> Benutzername/Passwort-Kombis verbunden.
>
> Auf 2 Computern geht dasselbe Programm mit denselben Umstᅵnden jedoch.
> Hat jemand eine Idee?
Ich tippe dennoch auf ein Problem bei der Netzwerk-Authentifizierung.
Dauert die Abfrage lange? Ggf. einfach mal auf die Netzwerkdatei
zugreifen (OpenFile) und prᅵfen, welche Fehlermeldung kommt.

Ggf. ist ja auch einfach der Laufwerksbuchstabe an den 2 Computer nicht
mehr gemappt, weil da z. B. jetzt der USB-Stick liegt. Das kᅵnnte man
mit UNC-Pfaden umgehen.

--
Stefan Graf

Soeren Muehlbauer

unread,
Feb 6, 2013, 10:00:43 AM2/6/13
to
Hi,

>>> Die Funktion FilExists(AFilename) liefert uns ein false zurᅵck, wenn ich
>>> es auf Y:\test.pdf ansetze, es geht aber beim anderen Laufwerk. Auf der
>>> Kommandozeile funktioniert sowohl
>>
>> Welche Delphi-Version?
>
> D2010.

Ist das ein Windows-Server, welcher die Freigaben bereitstellt? Wenns
ein Linux/NAS/irgendsowas ist, kann es eventuell mit
Groᅵ/Kleinschreibung zu tun haben. Ansonsten wᅵrde ich mal den
ProcessMonitor nutzen und schauen, was auf der Ebene abgeht.

Sᅵren.

Stefan M. Huber

unread,
Feb 6, 2013, 9:56:36 AM2/6/13
to
Am 06.02.2013, 14:39 Uhr, schrieb Stefan Graf <s.g...@web.de>:

> Am 06.02.2013 12:43, schrieb Stefan M. Huber:
>> Grüß euch!
>>
>> Ich habe einen Kunden mit 4 Windows8 Computern. UAC ist überall aus.
>> Netzlaufwerke wurden verbunden. Es gibt eine Datei Y:\test.pdf und
>> eine Kopie davon auf D:\test.pdf
>>
>> in unserem Programm kann man einfach einen Pfadnamen eingeben und der
>> wird ausgeführt, wenn das File exisitert.
>>
>> Die Funktion FilExists(AFilename) liefert uns ein false zurück, wenn
>> ich es auf Y:\test.pdf ansetze, es geht aber beim anderen Laufwerk.
>> Auf der Kommandozeile funktioniert sowohl
>>
>> start D:\test.pdf
>>
>> als auch
>>
>> start Y:\test.pdf
>>
>> Das Netzlaufwerk wird mit keinen besonderen
>> Benutzername/Passwort-Kombis verbunden.
>>
>> Auf 2 Computern geht dasselbe Programm mit denselben Umständen jedoch.
>> Hat jemand eine Idee?
> Ich tippe dennoch auf ein Problem bei der Netzwerk-Authentifizierung.
> Dauert die Abfrage lange? Ggf. einfach mal auf die Netzwerkdatei
> zugreifen (OpenFile) und prüfen, welche Fehlermeldung kommt.

Nein, die Antwort ist sofort da.

> Ggf. ist ja auch einfach der Laufwerksbuchstabe an den 2 Computer nicht
> mehr gemappt, weil da z. B. jetzt der USB-Stick liegt. Das könnte man
> mit UNC-Pfaden umgehen.

Das kann ich ausschließen: Ich hab mir den Share unter diversen Buchstaben verbunden, die definitiv nicht vergeben waren. Kein Effekt. Außerdem dürfte dann
start Y:\test.pdf

auf der cmd.exe auch nicht funktionieren.

Stefan M. Huber

unread,
Feb 6, 2013, 10:02:30 AM2/6/13
to
Am 06.02.2013, 16:00 Uhr, schrieb Soeren Muehlbauer <soer...@gmx.de>:

> Hi,
>
>>>> Die Funktion FilExists(AFilename) liefert uns ein false zurück, wenn ich
>>>> es auf Y:\test.pdf ansetze, es geht aber beim anderen Laufwerk. Auf der
>>>> Kommandozeile funktioniert sowohl
>>>
>>> Welche Delphi-Version?
>>
>> D2010.
>
> Ist das ein Windows-Server, welcher die Freigaben bereitstellt? Wenns
> ein Linux/NAS/irgendsowas ist, kann es eventuell mit
> Groß/Kleinschreibung zu tun haben. Ansonsten würde ich mal den
> ProcessMonitor nutzen und schauen, was auf der Ebene abgeht.

Gute Frage, ich check das mal. Ich fürchte, es ist eine NAS. Aber dann dürfte bei meinem Y:\test.pdf, das ich absichtlich nur mit Kleinbuchstaben angelegt habe, keine Probleme auftauchen.

Stefan

Sieghard Schicktanz

unread,
Feb 6, 2013, 1:28:42 PM2/6/13
to
Hallo Stefan,

Du schriebst am Wed, 06 Feb 2013 16:02:30 +0100:

> Gute Frage, ich check das mal. Ich f�rchte, es ist eine NAS. Aber dann
> d�rfte bei meinem Y:\test.pdf, das ich absichtlich nur mit
> Kleinbuchstaben angelegt habe, keine Probleme auftauchen.

Dumme Idee:
Probier' mal vollst�ndige _Gro�_schreibung des Namens.

Hintergrund:
Bei (dem wahrscheinlich benutzten) Samba (und evtl. sogar ganz allegemien
bei smb/cifs- Netzwerkdateisystemen) gibt es ein paar interessante
Sonderregeln f�r die "alten" 8:3-Namen, in welche Kategorie der Deines
Testfiles ja f�llt. Das l��t sich zwar alles einstellen, aber wenn man das
nicht will oder evtl. nicht kann, kann das durchaus zu �berraschungen
f�hren.

--
(Weitergabe von Adressdaten, Telefonnummern u.�. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder �hnlichem)
-----------------------------------------------------------
Mit freundlichen Gr��en, S. Schicktanz
-----------------------------------------------------------

Stefan M. Huber

unread,
Feb 7, 2013, 2:15:10 AM2/7/13
to
Am 06.02.2013, 19:28 Uhr, schrieb Sieghard Schicktanz <Sieghard....@schs.de>:

> Hallo Stefan,
>
> Du schriebst am Wed, 06 Feb 2013 16:02:30 +0100:
>
>> Gute Frage, ich check das mal. Ich fürchte, es ist eine NAS. Aber dann
>> dürfte bei meinem Y:\test.pdf, das ich absichtlich nur mit
>> Kleinbuchstaben angelegt habe, keine Probleme auftauchen.
>
> Dumme Idee:
> Probier' mal vollständige _Groß_schreibung des Namens.
>
> Hintergrund:
> Bei (dem wahrscheinlich benutzten) Samba (und evtl. sogar ganz allegemien
> bei smb/cifs- Netzwerkdateisystemen) gibt es ein paar interessante
> Sonderregeln für die "alten" 8:3-Namen, in welche Kategorie der Deines
> Testfiles ja fällt. Das läßt sich zwar alles einstellen, aber wenn man das
> nicht will oder evtl. nicht kann, kann das durchaus zu Überraschungen
> führen.

Das würde aber von allen Windows8-Computern aus gleich funktionieren oder eben auch nicht. Und es gibt durchaus andere Dateien, die ausschließlich aus Ziffern, Unterstrich und .pdf am Ende bestehen. Dort ist es dasselbe Spiel: 2 Computer können via Y:\... drauf zugreifen, 2 nicht.

Stefan

Stefan M. Huber

unread,
Feb 7, 2013, 6:26:31 AM2/7/13
to
Ohne Worte:
EnableLinkedConnections hilft http://support.microsoft.com/default.aspx?scid=kb;EN-US;937624

Aber ganz verstanden habe ich es nicht, weil:
1) UAC war aus, als das Netzlaufwerk verbunden wurde
2) ein Trennen und neuerliches Verbinden hat nichts gebracht.
3) Auf einer Station hat sich das erst gelöst, als wir sowohl EnableLinkedConnections aktiviert haben als auch das Netzlaufwerk neu verbunden.

Die Laufwerke werden nicht mit einem Script verbunden, sondern über den Explorer mit automaticher Wiederherstellung der Verbindung beim Anmelden.

Vielleicht hat jemand noch was erleuchtendes dazu.
Stefan

M. Behrendt

unread,
Feb 7, 2013, 6:50:57 AM2/7/13
to
Am Mittwoch, 6. Februar 2013 12:43:10 UTC+1 schrieb Stefan M. Huber:
> Grüß euch!
>
>
>
> Ich habe einen Kunden mit 4 Windows8 Computern. UAC ist überall aus. Netzlaufwerke wurden verbunden. Es gibt eine Datei Y:\test.pdf und eine Kopie davon auf D:\test.pdf
>
>
>
> in unserem Programm kann man einfach einen Pfadnamen eingeben und der wird ausgeführt, wenn das File exisitert.
>
und wenn du einfach mal Y: durchsuchen und dir alle Dateinamen irgendwohin ausgeben lässt?
dann siehst du ja die korrekte Schreibweise der test.pdf
evtl. "\\server\freigabe\test.pdf" eingeben?

(ich hab auch ein Programm, welches partout nicht mit Windows Netzwerkfreigaben und auch nicht mit verbundenen Netzlaufwerken hantieren will (TurboDelphi 2006))

Mike

Sieghard Schicktanz

unread,
Feb 7, 2013, 4:50:42 PM2/7/13
to
Hallo Stefan,

Du schriebst am Thu, 07 Feb 2013 08:15:10 +0100:

> > Dumme Idee:
> > Probier' mal vollst�ndige _Gro�_schreibung des Namens.
...
> Das w�rde aber von allen Windows8-Computern aus gleich funktionieren oder

Das k�nnte durchaus noch Unterschiede durch Versionen, installierte Zus�tze
und Service-Packs geben.

> eben auch nicht. Und es gibt durchaus andere Dateien, die ausschlie�lich
> aus Ziffern, Unterstrich und .pdf am Ende bestehen. Dort ist es dasselbe
> Spiel: 2 Computer k�nnen via Y:\... drauf zugreifen, 2 nicht.

Allerdings spricht diese Information nat�rlich dagegen.
Und besonders nat�r�ich, da Du ja inzwischen eine Ahilfe gefunden hast, die
offenbar ja die Ursache beseitigt - wobei da eben _doch_ Unterschiede bei
den Rechnern bestanden haben m�ssen.

Jörg Achtenhagen

unread,
Feb 8, 2013, 2:25:53 AM2/8/13
to
Stefan M. Huber wrote:

> Ich habe einen Kunden mit 4 Windows8 Computern. UAC ist ᅵberall aus.
> Netzlaufwerke wurden verbunden. Es gibt eine Datei Y:\test.pdf und
> eine Kopie davon auf D:\test.pdf
>
> in unserem Programm kann man einfach einen Pfadnamen eingeben und der
> wird ausgefᅵhrt, wenn das File exisitert.
>
> Die Funktion FilExists(AFilename) liefert uns ein false zurᅵck, wenn
> ich es auf Y:\test.pdf ansetze, es geht aber beim anderen Laufwerk.
> Auf der Kommandozeile funktioniert sowohl

Sind bei der Datei eventuell Attribute verbogen(Datum,...). Kopier dir
mal FileExists() aus den SysUtils und lass dir ausgeben, was
GetFileAttributes() zurᅵckliefert.

cu


--

Stefan M. Huber

unread,
Feb 8, 2013, 4:16:29 AM2/8/13
to
Am 07.02.2013, 22:50 Uhr, schrieb Sieghard Schicktanz <Sieghard....@schs.de>:

> Hallo Stefan,
>
> Du schriebst am Thu, 07 Feb 2013 08:15:10 +0100:
>
>> > Dumme Idee:
>> > Probier' mal vollständige _Groß_schreibung des Namens.
> ...
>> Das würde aber von allen Windows8-Computern aus gleich funktionieren oder
>
> Das könnte durchaus noch Unterschiede durch Versionen, installierte Zusätze
> und Service-Packs geben.
>
>> eben auch nicht. Und es gibt durchaus andere Dateien, die ausschließlich
>> aus Ziffern, Unterstrich und .pdf am Ende bestehen. Dort ist es dasselbe
>> Spiel: 2 Computer können via Y:\... drauf zugreifen, 2 nicht.
>
> Allerdings spricht diese Information natürlich dagegen.
> Und besonders natüröich, da Du ja inzwischen eine Ahilfe gefunden hast, die
> offenbar ja die Ursache beseitigt - wobei da eben _doch_ Unterschiede bei
> den Rechnern bestanden haben müssen.

...die leider nicht identifizierbar sind. Weil auf den beiden, wo es funktioniert die Option nicht aktiviert werden musste. Ich liebe dieses Betriebs(amkeits)system.

Stefan

Stefan M. Huber

unread,
Feb 8, 2013, 4:17:52 AM2/8/13
to
Am 08.02.2013, 08:25 Uhr, schrieb Jörg Achtenhagen <jachte...@habel.de>:

> Stefan M. Huber wrote:
>
>> Ich habe einen Kunden mit 4 Windows8 Computern. UAC ist überall aus.
>> Netzlaufwerke wurden verbunden. Es gibt eine Datei Y:\test.pdf und
>> eine Kopie davon auf D:\test.pdf
>>
>> in unserem Programm kann man einfach einen Pfadnamen eingeben und der
>> wird ausgeführt, wenn das File exisitert.
>>
>> Die Funktion FilExists(AFilename) liefert uns ein false zurück, wenn
>> ich es auf Y:\test.pdf ansetze, es geht aber beim anderen Laufwerk.
>> Auf der Kommandozeile funktioniert sowohl
>
> Sind bei der Datei eventuell Attribute verbogen(Datum,...). Kopier dir
> mal FileExists() aus den SysUtils und lass dir ausgeben, was
> GetFileAttributes() zurückliefert.

Würde ich insofern ausschließen, als dass ich die Datei test.pdf überall hinkopiert habe. Und es auf den Netzlaufwerken von 2 Computern aus geht. Aber für den nächsten Versuch halte ich das im Hinterkopf.

Stefan

Sieghard Schicktanz

unread,
Feb 8, 2013, 2:12:09 PM2/8/13
to
Hallo Stefan,

Du schriebst am Fri, 08 Feb 2013 10:16:29 +0100:

> > die offenbar ja die Ursache beseitigt - wobei da eben _doch_
> > Unterschiede bei den Rechnern bestanden haben m�ssen.
>
> ...die leider nicht identifizierbar sind. Weil auf den beiden, wo es
> funktioniert die Option nicht aktiviert werden musste. Ich liebe dieses

Wahrscheinlich war die dort schon aktiviert, wohl von irgendeinem anderen
Programm, das dort mal installiert wurde bzw. war. Lohnt sich wohl nicht,
das herauszufinden zu versuchen...
0 new messages