2016-10-03 87 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文件夹和程序文件中),并且能够返回正确的大小。 – Marc

+1

它应该工作;这听起来像是一个权限问题。 _C:\ Program Files(x86)_文件夹中的其他文件怎么样,_FileLen_是否工作? –

+0

更改了访问权限......同样的问题。 –

回答

0

感动了所有的代码出Program Files (x86)工作正常

+2

即使它绕过你的问题,这也不是一个“修复”。这里有两个问题。主要的一点是你似乎没有意识到2006年推出的UAC的影响!次要的是你似乎没有意识到WOW64重定向:你应该看看'Program Files',你应该通过'App.Path'或Shell32特殊文件夹查询调用来定位。理想情况下,您会使用'ProgramData',并通过Shell调用来发现。 – Bob77

+0

你是对的我没有完全意识到这些UAC和WOW64的含义,但是我的代码非常老旧,而且非常不受欢迎。它实际上使用了一个指向'Program Files(x86)'的localdir变量,这就是为什么这个修复对我来说足够好了。但我会研究你的适应症。谢谢 –