Visual Basic 2017 - Netzlaufwerksbuchstabe vorhanden

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Volker Bunge.

    Visual Basic 2017 - Netzlaufwerksbuchstabe vorhanden

    Hallo zusammen,

    ich bin jetzt am verzweifeln.

    Ich möchte nur prüfen, welche Laufwerksbuchstaben noch frei sind.

    Zur Ausgangssituation: Ich habe einen Win10 64Bit Rechner mit VS 2017 (Standardinstallation). ich habe mir ein paar Verzeichnisse von meinem Homeserver über den Explorer eingebunden. Diese werden erst einmal rot dargestellt und erst wenn ich drauf klicke, werden diese grün. Mein Programm ist auf Laufwerk Z:, welches ich somit erst einmal grün gemacht habe. Alles soweit kein Problem (erst einmal).

    Problem: Egal welche Methoden ist aus dem Internet benutzte, Laufwerk C: und D: werden richtig angezeigt und alle anderen werden als FALSE zurückgeliefert. Spätestens Z: sollte doch wieder TRUE sein.

    Was ich machen möchte: Das Programm soll später externe Festplatten am Homeserver als Netzwerklaufwerke beim Client einbinden bzw. wieder trennen. Dazu brauche ich natürlich die noch freien Buchstaben. Informationen über die (Netz-)Laufwerke zu bekommen (also Type, Größe, Name usw.) wäre auch nicht schlecht. Also wäre eine Sammlung aller Infos spitze. Die fehlenden Buchstaben (also die freien) kann ich mir ja dann raus suchen.

    Gibt es jemanden da draußen, der mir helfen kann?

    Vielen Dank

    Volker
    @Volker Bunge So was:

    VB.NET-Quellcode

    1. ComboBox1.Items.AddRange(System.IO.DriveInfo.GetDrives())
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich habe folgende zwei Seiten dazu gefunden:

    stackoverflow.com/questions/37…-connected-network-drives
    (mit C#-Code)

    devio.wordpress.com/2011/04/05…ot-listed-in-net-and-wmi/
    (eine Nicht-Programmier-Lösung)

    Die Frage, warum Netzlaufwerke nicht aufgelistet werden, scheint sehr häufig im Netz gestellt zu werden.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Netzlaufwerk:
    Vielleicht werden Zugangsdaten benötigt (Benutzername und Passwort)?

    #Edit: Durchgestrichen wieder entfernt, da es wohl auch relevant sein kann. ;)
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „JackCimberly“ ()

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim laufwerke() As String = {"C:", "G:", "F:", "T:"}
    3. For Each laufw As String In laufwerke
    4. Dim test As New System.IO.DirectoryInfo(laufw)
    5. If test.Exists Then
    6. MsgBox(laufw) '>-- Hier!
    7. End If
    8. Next
    9. End Sub


    Ich habe gerade diesen Code geschrieben.
    Sag uns Bescheid ob es damit geht!
    Viel Spaß! ;)
    Visual Basic.NET 8o
    MS-SQL
    8o
    @JackCimberly So abwegig finde ich deine Idee gar nicht. Ich habe gelesen, dass es auch ein Rechteproblem sein kann, nämlich dass das Programm als Admin gestartet wird und das Netzlaufwerk aber nur für den aktuellen Windows-User sichtbar ist. Geht in eine leicht andere Richtung, aber vom Ansatz her könnte es durchaus eine Lösung sein.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Es gibt wohl keine .Net Lösung und mit WMI war ich auch nicht erfolgreich, also Quick&Dirty:

    VB.NET-Quellcode

    1. If Drive.Name.StartsWith("\\") Then
    2. Return DriveType.Network
    3. End If


    edit: die IO.DriveType Klasse ist leider unzuverlässig.

    edit2: Omg, schonwieder am Thema vorbei, sorry. :whistling:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „FormFollowsFunction“ ()

    @Marcus Gräfe @JackCimberly Jou.

    Volker Bunge schrieb:

    Weitere Vorschläge?
    Falls das Programm mit Administratorrechten läuft:
    Da werden die Netzlaufwerke nicht angezeigt.
    Öffne den Explorer als Admin, verbinde dort die Laufwerke und starte aus diesem das Programm.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo zusammen,

    vielen Dank an alle erst einmal.

    Leider haben alle Versuche bisher keinen Erfolg gehabt.

    Folgendes habe ich ausprobiert.

    1. Explorer als Admin gestartet und Netzlaufwerk getrennt und neu angelegt. Optisch alles beim alten

    2. VB Verknüpfung geändert und nicht als Admin gestartet. VB möchte dies aber und startet entsprechend als Admin sich und mein Programm

    Dies kann aber an folgendem liegen

    Auf My Project --> Einstellungen für die Benutzerkontensteuerung anzeigen --> folgende Zeile suchen:
    <requestedExecutionLevel level="asInvoker" uiAccess="false" />

    durch folgende Zeile ersetzen und speichern:
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

    Quelle: System Zeit ändern (vorletzter Eintrag)

    3. Devio Bloglink ausprobiert: Dienste für "Virtual Disk Service” (vds) and “WMI Performance Adapter” (wmiApSrv) habe ich dauerhaft jetzt gestartet (waren beendet) und Rechner auch schon neu gestartet. Dienste laufen jetzt. Den obersten Link "DriveInfo.GetDrives()" übersetzt und ausprobiert. Gleiches Ergebnis wie bisher (Nur C: und D:). Alle weiteren Links funktionieren nicht mehr.

    4. Alle meine alten Methoden einzeln wieder aktivert und getestet. Leider ohne neues Ergebnis.

    Es kann doch eigentlich nicht Sinn und Zweck sein, den Entwickler mit so einer barnalen Aufgabe in die Knie zu zwingen bzw. das ganze Projekt scheitern zu lassen.

    Wäre nett, wenn noch jemand eine funktionierende Lösung hat.

    Velen Dank

    Volker

    Hallo Zusammen,

    habe gerade die Lösung gefunden.

    Es war die unter 2. genannte Änderung auf Admin. Habe es jetzt wieder auf <requestedExecutionLevel level="asInvoker" uiAccess="false" /> geändert und jetzt läuft es wieder.

    Mir ist aufgefallen, als ich das Projekt über "Datei, öffnen" öffnen wollte, dass dort schon keine Netzlaufwerke zu sehen waren. Daher habe ich die o. g. Änderung wieder deaktiviert und siehe da, alle Netzlaufwerke sind wieder da.

    Verstanden habe ich das aber trotzdem nicht. Wäre es umgekehrt, dann macht das ganze ja noch einen gewissen Sinn, aber als Admin so hinters Licht geführt zu werden, ist dann schon ganz schön frech.

    So, werde jetzt mal weitermachen und mit ggf. noch einmal an Euch wenden.

    Gruß

    Volker