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