Pregunta
Recibo comentarios de un desarrollador de que "la única forma en que Visual Basic (6) puede lidiar con una ruta UNC es asignarlo a una unidad". ¿Es esto preciso?Y, si es así, ¿cuál es el problema subyacente? ¿Existen otras alternativas además de una unidad asignada?
Solución
Aquí hay una forma que funciona.
Sub Main()
Dim fs As New FileSystemObject ' Add Reference to Microsoft Scripting Runtime
MsgBox fs.FileExists("\\server\folder\file.ext")
End Sub
Otros consejos
Tenemos una aplicación VB6 heredada que usa UNC para crear una cadena de conexión, así que sé que VB6 puede hacerlo.A menudo, encontrará que los problemas de permisos son los culpables.
Incluso el tipo de manejo de archivos de la vieja escuela funciona:
Open "\\host\share\file.txt" For Input As #1
Dim sTmp
Line Input #1, sTmp
MsgBox sTmp
Close #1
No creo que esto sea cierto, si estás usando el Scripting.Runtime
biblioteca.
Oldschool VB tenía algunas construcciones de lenguaje para el manejo de archivos.Estos son malvados.No los uses.
En VB6 no puedes usar CHDrive a una ruta UNC.
Dado que App.Path devuelve una ruta UNC, al intentar utilizar ChDrive para esta ruta, ChDrive App.Path
provocará un error.
Como dice Microsoft, "ChDrive no puede manejar rutas UNC y, por lo tanto, genera un error cuando App.Path devuelve una".Para más información, mira http://msdn.microsoft.com/en-us/library/aa263345(v=vs.60).aspx
¿Qué tipo de E/S de archivos estás haciendo?Si es texto, considere usar un FileSystemObject.
He observado problemas con la ruta UNC de VB6 cuando existe una combinación de los siguientes elementos:
- el unc apunta a una acción oculta '$'
- el nombre del servidor supera los 8 caracteres o tiene caracteres no estándar
- una parte del camino es excepcionalmente larga
- el servidor tiene soporte 8.3 desactivado por motivos de rendimiento
Por lo general, un error de acceso al archivo de ruta 75 o 54.En ocasiones, esto puede estar relacionado con API como getshortfilename y getshortpathname en las UNC antes mencionadas.
Aparte de eso, funcionan muy bien...Una ruta asignada generalmente no tendrá estos problemas, pero esas malditas asignaciones de unidades se desconectan con frecuencia y pueden cambiar en cualquier momento, causando muchos dolores de cabeza al soporte.