Vb6 Visual Basic 6和UNC路径

Vb6 Visual Basic 6和UNC路径,vb6,unc,Vb6,Unc,我收到一位开发人员的反馈,“VisualBasic(6)处理UNC路径的唯一方法是将其映射到驱动器。”这准确吗?如果是的话,根本的问题是什么?除了映射驱动器,还有其他选择吗?我们有一个传统的VB6应用程序,它使用UNC构建连接字符串,所以我知道VB6可以做到这一点。通常,您会发现权限问题是罪魁祸首。以下是一种可行的方法 Sub Main() Dim fs As New FileSystemObject ' Add Reference to Microsoft Scripting Run

我收到一位开发人员的反馈,“VisualBasic(6)处理UNC路径的唯一方法是将其映射到驱动器。”这准确吗?如果是的话,根本的问题是什么?除了映射驱动器,还有其他选择吗?

我们有一个传统的VB6应用程序,它使用UNC构建连接字符串,所以我知道VB6可以做到这一点。通常,您会发现权限问题是罪魁祸首。

以下是一种可行的方法

Sub Main()

    Dim fs As New FileSystemObject ' Add Reference to Microsoft Scripting Runtime
    MsgBox fs.FileExists("\\server\folder\file.ext")

End Sub

如果您使用的是
Scripting.Runtime
库,我认为这不是真的


旧学校的VB有一些用于文件处理的语言结构。这些都是邪恶的。不要使用它们。

您正在执行哪种类型的文件I/O?如果是文本,请考虑使用FileSystemObject。

即使是老式的文件处理方式也可以:

Open "\\host\share\file.txt" For Input As #1
Dim sTmp
Line Input #1, sTmp
MsgBox sTmp
Close #1

我观察到当以下项目组合存在时,VB6 UNC路径问题:

  • unc指向一个隐藏的“$”共享
  • 服务器名称超过8个字符,或具有非标准字符
  • 这条路的一部分特别长
  • 出于性能目的,服务器已关闭8.3支持
通常是75路径文件访问错误或54路径错误。有时,这可能与前面提到的UNC上的getshortfilename和getshortpathname等API有关


除此之外,他们工作得很好。。。映射路径通常不会出现这些问题,但那些该死的驱动器映射经常断开连接,并且可能随时更改,从而导致许多支持问题。

在VB6中,您不能将CHDrive用于UNC路径

由于App.Path返回UNC路径,因此尝试将ChDrive用于此路径,
ChDrive App.Path
将导致错误

正如微软所说,“ChDrive无法处理UNC路径,因此当App.Path返回UNC路径时会引发错误”。有关更多信息,请参阅