Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1550 | Anzahl registrierter User: 1841 | Besucher online: 136
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Erstellung eines virtuellen Laufwerks


Autor: Konstantin Gross
Sprache: VB.NET
Bewertung:
8.24 (5 votes)
Anzahl der Aufrufe: 6321
  
Kick it on dotnet-kicks.de  

Beschreibung:

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


Abgelegt unter: VirtualDrive, Drive, Virtual, Virtuell, Laufkwer, VirtuellesLaufwerk.



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
' 
' * 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
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Volker Steitz schrieb am:  04.12.2007 23:13:02

Funktioniert bestens. Hab´s auch gleich mal mit voller Punktzahl bewertet.
Vielen Dank.

Gruß Volker Steitz
Konstantin Gross schrieb am:  05.12.2007 08:16:12

Hallo, vielen Dank für die Bewertung, hat Spaß gemacht es für VB.NET umzuschreiben, ist ja komplettes Neuland :-)

Gruß
Konstantin


Diese Snippets könnten für Sie interessant sein:

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.