VB6 应用程序在单台 PC 上无法进行 8.3 路径转换

标签 vb6 filesystems registry

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

该字符串是使用以下命令从 .ini 文件中获取的 GetPrivateProfileString 函数。 (该字符串没有硬编码到应用程序中 - 它是从 ini 文件中获取的)。

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

有人有什么想法或者我可以采取的另一个方向吗?

最佳答案

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

关于VB6 应用程序在单台 PC 上无法进行 8.3 路径转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2607324/

相关文章:

vb6 - VB 6 : How many controls can I have on a single form?

linux - Linux 中的不间断写入

c# - 避免注册表 Wow6432Node 重定向

C# 将上下文菜单项添加到所有文件类型的 Windows 资源管理器

c# - 创建新文件夹时如何复制安全信息?

c++ - RegOpenKeyEx 和 RegSetValueEx 失败,但我不知道为什么

c++ - 用 C/C++ 编译一个 DLL,然后从另一个程序调用它

vb6 - DIM 在 Visual Basic 和 BASIC 中代表什么?

C# DLL 不能影响从 VB6 应用程序通过引用传递的数字的值

c - ext3代码理解