Otrzymuję informację zwrotną od programisty, że "Jedynym sposobem, w jaki wizualny element podstawowy (6) może obsługiwać ścieżkę UNC, jest odwzorowanie go na dysk". Czy to jest dokładne? A jeśli tak, to jaki jest podstawowy problem i czy istnieją alternatywy inne niż zmapowany dysk?Ścieżki Visual Basic 6 i UNC
Odpowiedz
Oto jeden sposób, który działa.
Sub Main()
Dim fs As New FileSystemObject ' Add Reference to Microsoft Scripting Runtime
MsgBox fs.FileExists("\\server\folder\file.ext")
End Sub
Mamy starszą wersję aplikacji VB6, która używa UNC do tworzenia ciągów połączeń, więc wiem, że VB6 może to zrobić. Często napotkasz problemy z uprawnieniami, aby być winnym.
nie sądzę, to jest prawda, jeśli używasz biblioteki Scripting.Runtime
.
Oldschool VB miał pewne konstrukcje językowe do obsługi plików. To są zło. Nie używaj ich.
Jakie operacje na plikach robisz? Jeśli jest to tekst, spójrz na użycie obiektu FileSystemObject.
Nawet stary typ szkoły obsługę plików działa:
Open "\\host\share\file.txt" For Input As #1
Dim sTmp
Line Input #1, sTmp
MsgBox sTmp
Close #1
Widziałem kwestie ścieżki VB6 UNC, gdy połączenie z poniższych elementów istnieje:
- UNC punkty ukryty '$' udostępnij
- nazwa serwera przekracza 8 znaków i lub ma niestandardowe znaki
- część ścieżki jest wyjątkowo długa
- serwer ma 8.3 wsparcie dla celów zamienił z wydajnością
Zazwyczaj błąd ścieżka dostępu do pliku 75 lub 54. Czasami może to być związane z API, takich jak getshortfilename i GetShortPathName na wspomnianej UNC-tych.
Poza tym, że działają świetnie ... Zmapowana ścieżka zwykle nie będzie miała takich problemów, ale te przeklęte mapowania dysków często się odłączają i mogą się zmienić w dowolnym momencie, powodując wiele problemów z obsługą.
W VB6 nie można używać narzędzia CHDrive do ścieżki UNC.
Ponieważ App.Path zwraca ścieżkę UNC, próbując użyć ChDrive do tej ścieżki, ChDrive App.Path
spowoduje błąd.
Jak twierdzi Microsoft, "ChDrive nie może obsługiwać ścieżek UNC, a tym samym wywołuje błąd, gdy App.Path zwraca jeden". Aby uzyskać więcej informacji, spójrz na http://msdn.microsoft.com/en-us/library/aa263345(v=vs.60).aspx