DefineDosDevice()で割り当てたドライブを解除する方法を記載します。
DefineDosDevice()割り当てドライブの解除
Imports System.Runtime.InteropServices <DllImport("Kernel32.dll")> Public Shared Function QueryDosDevice(lpDeviceName As String, lpTargetPath As System.Text.StringBuilder, ucchMax As Integer) As Integer End Function Const DDD_RAW_TARGET_PATH = &H1 '文字列をMS-DOSパスからパスに変換せず、そのまま使います。 Const DDD_REMOVE_DEFINITION = &H2 '指定のデバイスの指定された定義を削除 Const DDD_EXACT_MATCH_ON_REMOVE = &H4 '完全に一致するマッピングから、削除するマッピングを判断します。この値を指定すると、定義していないデバイス名を削除しないようにする ''' <summary> ''' 仮想ドライブを解除します。 ''' </summary> ''' <param name="lpDeviceName">ドライブ名</param> ''' <returns></returns> Public Function UnmapDrive(lpDeviceName As String) As Boolean Return (DefineDosDevice(DDD_REMOVE_DEFINITION, lpDeviceName, Nothing)) End Function ''' <summary> ''' 仮想ドライブを解除します。 ''' </summary> ''' <param name="lpDeviceName">ドライブ名</param> ''' <param name="lpTargetPath">指定場所</param> ''' <returns></returns> Public Function UnmapDrive(lpDeviceName As String, lpTargetPath As String) As Boolean Return (DefineDosDevice(DDD_REMOVE_DEFINITION Or DDD_EXACT_MATCH_ON_REMOVE, lpDeviceName, lpTargetPath)) End Function
ドライブ解除
'ドライブ指定でドライブ解除する Dim rc = UnmapDrive("U:") 'ドライブとフォルダ指定でドライブを解除する Dim rc = UnmapDrive("U:", "C:\Work")