2016-10-03 4 views
0

Ich übernehme einen alten Code in VB6.VB6- FileLen liefert keinen korrekten Wert

Um die Robustheit zu verbessern, habe ich einen Test für die Dateigröße hinzugefügt, bevor ich sie lese.

length = FileLen("c:\Program Files (x86)\xxxx\file.ini") 

Offensichtlich existiert die Datei, sonst würde ich nicht im Forum fragen.

Wenn Code unter Windows XP ausgeführt wird, funktioniert es einwandfrei. Bei der Ausführung von Code unter Windows 10 length=0.

Irgendwelche Hinweise?

+1

Ich kann keine Lösung, sondern bestätigen mit Windows 10. Ich habe einen Windows 10-Umgebung mit VB6 und getestet, um die FileLen Funktion kein generelles Problem ist, mit ein paar INI-Dateien auf der Maschine (im Windows-Ordner und Programme) und es konnte die richtige Größe zurückgeben. – Marc

+1

Es sollte funktionieren; Es klingt wie ein Erlaubnisproblem. Was ist mit anderen Dateien im Ordner _C: \ Programme (x86) _, funktioniert _FileLen_? –

+0

hat die Berechtigung für den vollständigen Zugriff geändert ... das gleiche Problem. –

Antwort

0

den gesamten Code Verschoben aus Program Files (x86) funktioniert

+2

Das ist nicht wirklich ein "Fix", auch wenn es das Problem für Sie umgeht. Sie haben hier zwei Probleme. Wichtig ist, dass Sie sich der Auswirkungen der UAC, die 2006 eingeführt wurde, nicht bewusst sind! Geringfügig scheint man sich der WOW64-Umleitung nicht bewusst zu sein: Sie sollten sich 'Programme' anschauen und Sie sollten das entweder über' App.Path' oder einen Shell32-Spezialordner-Abfrageanruf herausfinden. Im Idealfall würden Sie 'ProgramData' verwenden und dies auch über einen Shell-Aufruf herausfinden. – Bob77

+0

Sie haben Recht Ich bin mir dieser Auswirkungen von UAC und WOW64 nicht ganz bewusst, aber mein Code ist sehr alt und sehr unrobust. Es verwendet tatsächlich eine localdir-Variable, die auf 'Program Files (x86)' verweist, weshalb die Korrektur für mich gut genug ist. Aber ich werde nach Ihren Indikationen suchen. Danke –

Verwandte Themen