Mit der von mir erstellen Klasse, kann man ein nicht persistentes virtuelles Laufwerk erstellen. Anbei ein Beispiel wie man ein Laufwerk erstellt/löscht.
Laufwerk erstellen:
TL.Drive.VirtualDrive.Create('Z', @"C:\Musiksammlung");
Laufwerk löschen:
TL.Drive.VirtualDrive.Delete('Z', @"C:\Musiksammlung");
'
' * VirtualDrive - Erstellung/Löschung von virtuellen Laufwerken
' * ------------------------------------------------------------
' * Version: 1.0
' * Copyright © 2007 Konstantin Gross
' * http://www.texturenland.de
' *
'
Imports System
Imports System.IO
Imports System.Runtime.InteropServices
Namespace TL.Drive
''' <summary>
''' Erstellung und Löschung nicht persistenter virtueller Laufwerke.
''' Das Laufwerk muss nach jedem Neustart des Systems wiederhergestellt werden.
''' Wird nicht unter dem Registryschlüssel angezeigt : HKLM\System\MountedDevices.
'''
''' VirtualDrive - © Konstantin Gross
''' </summary>
Public Class VirtualDrive
#Region "Win32"
<DllImport("kernel32.dll", CharSet:=CharSet.Auto)> _
Private Shared Function DefineDosDevice(ByVal dwFlags As Integer, ByVal lpDeviceName As String, ByVal lpTargetPath As String) As Boolean
End Function
<DllImport("kernel32.dll", CharSet:=CharSet.Auto)> _
Private Shared Function GetDriveType(ByVal lpRootPathName As String) As Integer
End Function
Private Const DDD_RAW_TARGET_PATH As Integer = 1
Private Const DDD_REMOVE_DEFINITION As Integer = 2
Private Const DDD_EXACT_MATCH_ON_REMOVE As Integer = 4
Private Const DRIVE_UNKNOWN As Integer = 0
Private Const DRIVE_NO_ROOT_DIR As Integer = 1
Private Const DRIVE_FIXED As Integer = 3
#End Region
#Region "Öffentliche Methoden"
#Region "Erstellen"
''' <summary>
''' Erstellung eines nicht persistenten Laufwerks.
''' </summary>
''' <param name="driveChar">Laufwerksbuchstabe.</param>
''' <param name="path">Pfad zu dem zu verknüpfenden Ordner.</param>
''' <returns>True/False beim Versuch das Laufwerk zu erstellen</returns>
Public Shared Function Create(ByVal driveChar As Char, ByVal path As String) As Boolean
Return DDDOperation(driveChar, path, True)
End Function
#End Region
#Region "Löschen"
''' <summary>
''' Löschung eines nicht persistenten Laufwerks.
''' </summary>
''' <param name="driveChar">Laufwerksbuchstabe.</param>
''' <param name="path">Pfad zu dem zu verknüpfenden Ordner.</param>
''' <returns>True/False beim Versuch das Laufwerk zu löschen</returns>
Public Shared Function Delete(ByVal driveChar As Char, ByVal path As String) As Boolean
Return DDDOperation(driveChar, path, False)
End Function
#End Region
#End Region
#Region "Private Methoden"
#Region "DDDOperationen"
Private Shared Function DDDOperation(ByVal driveChar As Char, ByVal path As String, ByVal create As Boolean) As Boolean
'Gültiges Verzeichnis?
If Not Directory.Exists(path) Then
Return False
End If
Dim drive As String = String.Format("{0}:", driveChar.ToString().ToUpper())
'Existiert das Volumen?
Dim type As Integer = GetDriveType(String.Format("{0}{1}", drive, System.IO.Path.DirectorySeparatorChar))
'Hinweiß: Ein erstelltes virtuelles Laufwerk ist vom Typ DRIVE_FIXED
If (create AndAlso type <> DRIVE_UNKNOWN AndAlso type <> DRIVE_NO_ROOT_DIR) OrElse (Not create AndAlso type <> DRIVE_FIXED) Then
Return False
End If
Dim flags As Integer = DDD_RAW_TARGET_PATH
If Not create Then
flags = flags Or (DDD_REMOVE_DEFINITION Or DDD_EXACT_MATCH_ON_REMOVE)
End If
Return DefineDosDevice(flags, drive, String.Format("{0}??{0}{1}", System.IO.Path.DirectorySeparatorChar, path))
End Function
#End Region
#End Region
End Class
End Namespace
2 Kommentare zum Snippet