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")