1

私は、多くのコンピューター ドライブを備えたコンピューター ネットワーク全体で数百のファイルを参照するドキュメント インデックス システムを作成しています。新しいドライブが追加されるか、ドライブがネットワークから削除されると、ドライブ文字が再割り当てされます。したがって、ドライブ文字を再割り当てすると、ドライブ文字を使用する特定のファイル パスが無意味になる場合があります。この問題を回避するために、代わりに UNC (Universal Naming Convention) パス名を使用したいと考えています。

以下に示すコードは、Excel 2007 で実行すると、ドライブ文字を UNC に相当するものに変換します。ただし、私のアプリケーションは Visual Studio 2010 で記述されていますが、残念ながら以下のコードは Visual Studio では機能しないようです。実行時にエラーは報告されませんが、UNC は返されません。設定が必要な「参照」に問題がある可能性があります。

Imports System
Imports System.Management
Module Module1

' 32-bit Function version.
' Enter this declaration on a single line.
Declare Function WNetGetConnection Lib "MPR.DLL" Alias _
   "WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal _
   lpszRemoteName As String, ByVal lSize As Long) As Long

Dim lpszRemoteName As String
Dim lSize As Long

' Use for the return value of WNetGetConnection() API.
Const NO_ERROR As Long = 0

' The size used for the string buffer. Adjust this if you
' need a larger buffer.
Const lBUFFER_SIZE As Long = 255


Sub GetNetPath()
    Dim DriveLetter, lpszLocalName As String
    Dim cbRemoteName As Long
    Dim lStatus&


    ' Prompt the user to type the mapped drive letter.
    DriveLetter = UCase(InputBox("Enter Drive Letter of Your Network" & _
       "Connection." & Chr(10) & "i.e. F (do not enter a colon)"))

    ' Add a colon to the drive letter entered.
    lpszLocalName = DriveLetter & ":"

    ' Specifies the size in characters of the buffer.


    ' Prepare a string variable by padding spaces.
    lpszRemoteName = lpszRemoteName & Space(lBUFFER_SIZE)
    cbRemoteName = Len(lpszRemoteName)
    ' Return the UNC path (\\Server\Share).
    lStatus& = WNetGetConnection(lpszLocalName, lpszRemoteName, _
       cbRemoteName)

    ' Verify that the WNetGetConnection() succeeded. WNetGetConnection()
    ' returns 0 (NO_ERROR) if it successfully retrieves the UNC path.
    If lStatus& = NO_ERROR Then

        ' Display the UNC path.
        MsgBox(Left$(lpszRemoteName, cbRemoteName))

    Else
        ' Unable to obtain the UNC path.
        MsgBox("Unable to obtain the UNC path.")
    End If

End Sub


End Module

どんな提案もありがたく受け取った。どうもありがとう

4

1 に答える 1

0

1 つの方法は、string strUncpath="file:\"; です。次に、これをパスの先頭に追加します

strUncpath+ パスが何であれ、またはこれから拡張メソッドを作成して、file:\ を yoi に追加することができます

于 2012-09-08T20:25:40.693 に答える