【发布时间】:2010-09-10 07:53:46
【问题描述】:
我收到了一位开发人员的反馈:“Visual Basic (6) 处理 UNC 路径的唯一方法是将其映射到驱动器。”这是准确的吗?如果是这样,根本问题是什么?除了映射驱动器之外还有其他选择吗?
【问题讨论】:
我收到了一位开发人员的反馈:“Visual Basic (6) 处理 UNC 路径的唯一方法是将其映射到驱动器。”这是准确的吗?如果是这样,根本问题是什么?除了映射驱动器之外还有其他选择吗?
【问题讨论】:
我们有一个使用 UNC 构建连接字符串的旧版 VB6 应用程序,所以我知道 VB6 可以做到。通常,您会发现权限问题是罪魁祸首。
【讨论】:
这是一种可行的方法。
Sub Main()
Dim fs As New FileSystemObject ' Add Reference to Microsoft Scripting Runtime
MsgBox fs.FileExists("\\server\folder\file.ext")
End Sub
【讨论】:
即使是老式的文件处理类型也可以:
Open "\\host\share\file.txt" For Input As #1
Dim sTmp
Line Input #1, sTmp
MsgBox sTmp
Close #1
【讨论】:
如果您使用的是 Scripting.Runtime 库,我认为这不是真的。
Oldschool VB 有一些用于文件处理的语言结构。这些都是邪恶的。不要使用它们。
【讨论】:
在 VB6 中,您不能将 CHDrive 用于 UNC 路径。
由于 App.Path 返回的是 UNC 路径,尝试使用 ChDrive 到该路径,ChDrive App.Path 会报错。
正如微软所说“ChDrive 无法处理 UNC 路径,因此当 App.Path 返回一个时会引发错误”。欲了解更多信息,请查看http://msdn.microsoft.com/en-us/library/aa263345(v=vs.60).aspx
【讨论】:
你在做什么类型的文件 I/O?如果是文本,请考虑使用 FileSystemObject。
【讨论】:
当以下项目组合存在时,我观察到 VB6 UNC 路径问题:
通常是 75 路径文件访问错误或 54。有时这可能与 API 相关,例如上述 UNC 上的 getshortfilename 和 getshortpathname。
除此之外它们工作得很好......映射路径通常不会出现这些问题,但那些该死的驱动器映射经常断开连接,并且随时可能发生变化,从而导致许多支持问题。
【讨论】: