VB6应用程序在单台PC上的8.3路径转换失败

VB6应用程序在单台PC上的8.3路径转换失败,vb6,filesystems,registry,Vb6,Filesystems,Registry,我有一个VB6桌面应用程序,部署在1200多台桌面上。整个设备是WindowsXPSP2和SP3系统的混合。除一台电脑(XP SP2)外,所有这些电脑都能够成功破译与此应用程序相关的.ini文件中使用的DOS 8.3路径(即C:\PROGRA~1\DATFOL~1\Config\)。这台特定的PC出错并显示一条消息:“运行时错误'76':找不到路径” 字符串是使用 GetPrivateProfileString函数。(字符串不是硬编码到应用程序中的-它是从ini文件获得的) 由于只有一台机器出现

我有一个VB6桌面应用程序,部署在1200多台桌面上。整个设备是WindowsXPSP2和SP3系统的混合。除一台电脑(XP SP2)外,所有这些电脑都能够成功破译与此应用程序相关的.ini文件中使用的DOS 8.3路径(即
C:\PROGRA~1\DATFOL~1\Config\
)。这台特定的PC出错并显示一条消息:“运行时错误'76':找不到路径”

字符串是使用
GetPrivateProfileString
函数。(字符串不是硬编码到应用程序中的-它是从ini文件获得的)

由于只有一台机器出现问题,我希望该设备上的一些配置值是根本原因。我查看了注册表中的NtfsDisable8dot3NameCreation设置,以查看这是否会导致问题,但在更改此设置时,我无法在任何其他计算机上重现此问题


有人有什么想法或者我可以选择的其他方向吗?

不要使用硬编码路径或短文件名。Program Files文件夹可能不在C:驱动器上,可能没有命名为Program Files,即使它是,也可能没有短文件名PROGRA~1(DATAFOL~1也是如此)。在安装过程中,将安装路径写入INI文件或注册表,然后在程序中读取并使用该路径。

检查电脑。PROGRA~1或DATFOL~1实际上可能是~2。将代码中使用的8.3名称放入资源管理器中,看看它能告诉您什么。

如果有人四处闲逛,做了一个临时/备份/测试
\DataFolder\u temp
,删除了原来的名称,然后重新命名,那么短路径将是
DATAFOL~2

删除目录并重新创建。

使用完整路径名-可能是C:\PROGRA~1\DATFOL~1映射到奇数PC上的另一个路径(例如,正确的路径是C:\PROGRA~1\DATFOL~2)重新映射错误的机器。;-)澄清一下:路径
C:\PROGRA~1\DATFOL~1\Config
是硬编码到应用程序中的吗?
C:\PROGRA~1\DATFOL~1
是应用程序的安装目录吗?您是否愿意更改代码?如上所述-通过GetPrivateProfileString函数从ini文件中获取目录。但是,我同意其他答案。不要在源代码中放置绝对路径。糟糕,糟糕,糟糕。我发现很不幸,这个问题被误读了,路径名是硬编码的,而.ini file语句被遗漏了。不过,亚历克斯的回答似乎纠正了这一点。