2016-10-03 4 views
0

Я беру на себя старый код в VB6.VB6- FileLen не возвращает правильное значение

Чтобы повысить надежность, я добавил тест на размер файла перед его чтением.

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

Очевидно, что файл существует, иначе я бы не спросил на форуме.

При запуске кода в Windows XP работает нормально. При запуске кода под Windows 10 length=0.

Любой ключ?

+1

У меня нет решения, но может подтвердить это не общая проблема с ОС Windows 10. У меня есть среда Windows 10 с VB6 и протестировали функцию FileLen с несколькими INI-файлами на компьютере (в папке Windows и Program Files), и он смог вернуть правильный размер. – Marc

+1

Он должен работать; это звучит как проблема с разрешением. Как насчет других файлов в папке _C: \ Program Files (x86) _, работает ли _FileLen_? –

+0

изменено разрешение на общий доступ ... такая же проблема. –

ответ

0

Переведен весь код из Program Files (x86) прекрасно работает

+2

Это не «исправление», даже если оно обходит проблему для вас. У вас здесь две проблемы. Главное, вы, похоже, не знаете о последствиях UAC, который был представлен в 2006 году! Мало того, вы, похоже, не знаете о перенаправлении WOW64: вы должны смотреть на «программные файлы», и вам следует найти это через «App.Path» или вызов запроса специальной папки Shell32. В идеале вы будете использовать 'ProgramData', хотя и обнаруживаете это через вызов Shell. – Bob77

+0

Вы правы. Я не полностью осознаю эти последствия UAC и WOW64, но мой код очень старый и очень непрозрачный. Фактически используется переменная localdir, указывающая на «Program Files (x86)», поэтому это исправление для меня достаточно. Но я буду исследовать ваши показания. Спасибо –

Смежные вопросы