Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[gelöst] Netzlaufwerke verloren
mogel
myCSharp.de - Member

Avatar #avatar-3347.jpg


Dabei seit:
Beiträge: 158

Themenstarter:

[gelöst] Netzlaufwerke verloren

beantworten | zitieren | melden

Moin,

ich habe meine Netzlaufwerke verloren ... via DriveInfo.GetDrives() lasse ich mir alle Laufwerke liefern die im Rechner vorhanden sind ... funktioniert auch - nur eben nicht bei Netzlaufwerken ... die werden ignoriert ... selbst wenn ich das Netzlaufwerk direkt instanziere new DriveInfo("K:\") funktioniert es nicht ... im Explorer ist das Laufwerk geöffnet und ich kann darauf zugreifen

wen im Framework muss ich bearbeiten das mir meine Netzlaufwerke (sind 3 Stück) angezeigt werden

hand, mogel
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von mogel am .
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4179

beantworten | zitieren | melden

Evtl. mit WMI, s. Use WMI to get drive information from local, network and mapped drives
bzw. Laufwerke und Laufwerkstypen ermitteln

Ansonsten geht das auch recht einfach mit:


for(char c = 'A'; c ≤'Z'; c++)
{
  DriveInfo di = new DriveInfo(c.ToString());
  bool istNetzwerk = (di.DriveType == DriveType.Network);
}

Aber was meinst du genau mit "verloren"?
private Nachricht | Beiträge des Benutzers
mogel
myCSharp.de - Member

Avatar #avatar-3347.jpg


Dabei seit:
Beiträge: 158

Themenstarter:

beantworten | zitieren | melden

Zitat von Th69
Evtl. mit WMI, s. Use WMI to get drive information from local, network and mapped drives
bzw. Laufwerke und Laufwerkstypen ermitteln
mit WMI werde ich es dann am Montag versuchen - an nativ hatte ich auch schon gedacht
Zitat
Ansonsten geht das auch recht einfach mit:


for(char c = 'A'; c ≤'Z'; c++)
{
  DriveInfo di = new DriveInfo(c.ToString());
  bool istNetzwerk = (di.DriveType == DriveType.Network);
}
das klappt nicht ... hatte ich auch schon gemacht ... instanziere mal DriveInfo für ein Laufwerk was Du nicht hast (B:\ oder so) ... das ist dann das Gleiche wie bei mir für ein Netzlaufwerk ... sprich - für .NET existieren die Netzlaufwerke einfach nicht
Zitat
Aber was meinst du genau mit "verloren"?
das ich die Dinger nicht über .NET finde :)
private Nachricht | Beiträge des Benutzers
mogel
myCSharp.de - Member

Avatar #avatar-3347.jpg


Dabei seit:
Beiträge: 158

Themenstarter:

beantworten | zitieren | melden

super ...

    Sub TestDriveSpace()
        'http://msdn.microsoft.com/en-us/library/aa394592(VS.85).aspx

        Dim objWMI As Object
        Dim colDisks As Object
        Dim objDisk As Object
        Dim strDriveType As String = "unsued"

        objWMI = GetWMIService

        ' determine free space
        colDisks = objWMI.ExecQuery _
                        ("Select * from Win32_LogicalDisk")
        For Each objDisk In colDisks

            With objDisk

                Try
                    Debug.WriteLine("DeviceID: " & .DeviceID)
                    ' assume GB
                    Debug.WriteLine("Size: " & Format(.Size / 1000000000, "# GB"))
                    ' assume GB
                    Debug.WriteLine("Free Disk Space: " _
                               & Format(.FreeSpace / 1000000000, "# GB"))
                    Debug.WriteLine("% Free: " & Format(.FreeSpace / .Size, "Percent"))

                    ' http://msdn.microsoft.com/en-us/library/aa394173(VS.85).aspx
                    Select Case .DriveType
                        Case 0
                            strDriveType = "Unknown"
                        Case 1
                            strDriveType = "No Root Directory"
                        Case 2
                            strDriveType = "Removable Disk"
                        Case 3
                            strDriveType = "Local Disk"
                        Case 4
                            strDriveType = "Network Drive"
                        Case 5
                            strDriveType = "Compact Disc"
                        Case 6
                            strDriveType = "RAM Disk"
                    End Select

                    Debug.Print("Drive Type: " & strDriveType)
                    If (strDriveType = "Local Disk") Or (strDriveType = "Network Drive") Then
                        Debug.WriteLine("File System: " & .FileSystem)
                    End If
                    If strDriveType = "Network Drive" Then
                        Debug.WriteLine("Provider Name: " & .ProviderName)
                    End If
                    Debug.WriteLine("---")

                Catch ex As Exception
                    Debug.WriteLine(ex.Message)
                End Try
            End With

        Next objDisk

    End Sub

liefert mir
DeviceID: C:
Size: 268 GB
Free Disk Space: 195 GB
% Free: 72,60%
Drive Type: Local Disk
File System: NTFS
---
DeviceID: D:
Size: 215 GB
Free Disk Space: 150 GB
% Free: 69,74%
Drive Type: Local Disk
File System: NTFS
---
DeviceID: E:
Size: 94 GB
Free Disk Space: 20 GB
% Free: 21,89%
Drive Type: Local Disk
File System: NTFS
---
DeviceID: F:
Eine Ausnahme (erste Chance) des Typs "System.InvalidCastException" ist in Microsoft.VisualBasic.dll aufgetreten.
Der Operator / ist für Typ DBNull und Typ Integer nicht definiert.
DeviceID: G:
Eine Ausnahme (erste Chance) des Typs "System.InvalidCastException" ist in Microsoft.VisualBasic.dll aufgetreten.
Der Operator / ist für Typ DBNull und Typ Integer nicht definiert.
DeviceID: H:
Eine Ausnahme (erste Chance) des Typs "System.InvalidCastException" ist in Microsoft.VisualBasic.dll aufgetreten.
Der Operator / ist für Typ DBNull und Typ Integer nicht definiert.
DeviceID: P:
Size: 42 GB
Free Disk Space: 6 GB
% Free: 15,06%
Drive Type: Local Disk
File System: NTFS
---
also quasi nichts - es fehlen noch immer die Netzlaufwerk K, L und S

hand, mogel
private Nachricht | Beiträge des Benutzers
Lion1984
myCSharp.de - Member



Dabei seit:
Beiträge: 782
Herkunft: Österreich

beantworten | zitieren | melden

Passen vielleicht die Netzlaufwerke nicht?

Der Code

for (char c = 'A'; c ≤ 'Z'; c++)
            {
                DriveInfo di = new DriveInfo(c.ToString());
                bool istNetzwerk = (di.DriveType == DriveType.Network);
                Console.WriteLine("{0}  {1}", c, istNetzwerk);
            }
            Console.ReadKey();
funktioniert tadelos und erkennt auch die Netzlaufwerke korrekt.

Lion
lg Lion
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4179

beantworten | zitieren | melden

Hallo mogel,

das scheint aber dann speziell bei dir nur so zu sein, denn es gibt etliche Beispiele im Netz, bei denen auch die gemappten Netzwerklaufwerke angezeigt werden, s. z.B.
Read free space on network drives
How Can I Determine Which Drives are Mapped to Network Shares?
Network Drive Free Space

Und selbst die einfache DriveInfo-Schleife liefert bei mir (WinXP) auch die Netzwerk-Laufwerke.

P.S. herbivore, ich bin lernfähig -)
private Nachricht | Beiträge des Benutzers
mogel
myCSharp.de - Member

Avatar #avatar-3347.jpg


Dabei seit:
Beiträge: 158

Themenstarter:

beantworten | zitieren | melden

Zitat von Th69
das scheint aber dann speziell bei dir nur so zu sein, denn es gibt etliche Beispiele im Netz, bei denen auch die gemappten Netzwerklaufwerke angezeigt werden, s.
anscheinend bin ich der einzige ... unter 1.1 uwsste ich das es nicht ging - hatte auch irgendwie im Kopf das die regel mit 2.0 wieder gestrichen wurde ... jedenfalls knallts

folgendes liefert mir eine DirdctoryNotFoundException - das Laufwerk ist aber da


        Try
            IO.Directory.CreateDirectory(IO.Path.Combine(drive, verzeichnis))
        Catch ex As Exception
            mylogger.err(ex)
        End Try
Zitat
Und selbst die einfache DriveInfo-Schleife liefert bei mir (WinXP) auch die Netzwerk-Laufwerke.
genau wegen XP versuche ich das Problem ja zu lösen ... selber habe ich Win7 64 ... das Programm "läuft" produktiv auf WinXP 32 - mit einem Netzlaufwerk ... beide Rechner finden die Netzlaufwerke nicht X(
private Nachricht | Beiträge des Benutzers
Lion1984
myCSharp.de - Member



Dabei seit:
Beiträge: 782
Herkunft: Österreich

beantworten | zitieren | melden

Vielleicht passt das Ergebniss aus Combine nicht?
lg Lion
private Nachricht | Beiträge des Benutzers
mogel
myCSharp.de - Member

Avatar #avatar-3347.jpg


Dabei seit:
Beiträge: 158

Themenstarter:

beantworten | zitieren | melden

*hass*, mein Unmut über UAC wächst mit jedem Tag den ich den Blödsinn nutzen muss,

ich habe mir jetzt nochmal ein kleines Programm geschrieben - nur ausgabe der Laufwerke

wenn ich kein Manifest drinnen habe, super ... sowie ich Manifest einbaue (benötige diverse Rechte) funktioniert es nicht mehr ... keine Zugriffsrechte auf Netzlaufwerke

kann ich das Problem entsprechend via UAC lösen??
private Nachricht | Beiträge des Benutzers
mogel
myCSharp.de - Member

Avatar #avatar-3347.jpg


Dabei seit:
Beiträge: 158

Themenstarter:

beantworten | zitieren | melden

So,

es liegt wirklich nur an UAC ... das Problem ist via cmd.exe nachzuvollziehen ... wenn man es als Administrator ausführt sind auch da die Netzlaufwerke weg ... UAC kopiert die Netzlaufwerke nicht mit in die neue Session

KB937624: After you turn on User Account Control in Windows Vista, programs may be unable to access some network locations

leider funktioniert das nicht bei mir unter Win7

hand, mogel

Nachtrag: funktioniert doch - nur einfach Rechner neu starten
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von mogel am .
private Nachricht | Beiträge des Benutzers