質問

「Visual Basic(6)がUNCパスに対処できる唯一の方法は、ドライブにマッピングすることである」という開発者からフィードバックを受け取ります。これは正確ですか?もしそうなら、根本的な問題は何ですか?マップされたドライブ以外に代替手段はありますか?

役に立ちましたか?

解決

ここで有効な方法の 1 つを紹介します。

Sub Main()

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

End Sub

他のヒント

UNC を使用して接続文字列を構築する従来の VB6 アプリがあるため、VB6 でそれができることはわかっています。多くの場合、権限の問題が原因であることがわかります。

古いタイプのファイル処理でも機能します。

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

を使用している場合、これは真実ではないと思います Scripting.Runtime 図書館。

オールドスクール VB には、ファイル処理用の言語構造がいくつかありました。これらは悪です。使用しないでください。

VB6 では、CHDrive を UNC パスに使用できません。

App.Path は UNC パスを返すため、このパスに対して ChDrive を使用しようとすると、 ChDrive App.Path エラーが発生します。

Microsoft が言うように、「ChDrive は UNC パスを処理できないため、App.Path が UNC パスを返すとエラーが発生します。」詳細については、以下を参照してください。 http://msdn.microsoft.com/en-us/library/aa263345(v=vs.60).aspx

どのような種類のファイル I/O を行っていますか?テキストの場合は、FileSystemObject の使用を検討してください。

以下の項目の組み合わせが存在する場合に、VB6 UNC パスの問題が発生することが確認されています。

  • unc は非表示の '$' 共有を指します
  • サーバー名が 8 文字を超えているか、標準以外の文字が含まれています
  • 道の一部が異常に長い
  • サーバーではパフォーマンス上の理由から 8.3 サポートがオフになっています

通常は、75 パスのファイル アクセス エラー、または 54 です。場合によっては、これは前述の UNC の getshortfilename や getshortpathname などの API に関連している可能性があります。

それ以外は素晴らしい働きをしてくれます...マップされたパスには通常、これらの問題は発生しませんが、これらの恐ろしいドライブ マッピングは頻繁に切断され、いつでも変更される可能性があり、サポートに多くの頭痛の種をもたらします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top