Eigene (Windows 7) Freigaben per vb.net auflisten

Hi zusammen

Ich weiss es hat eigentlich keinen Nutzen, aber das müsst Ihr meinem Lehrer sagen :P
Ich soll nämlich eine kleine "Überwachungssoftware" für das eigene Netzwerk programmieren. Teilbestand dieser Aufgabe ist es, die vom eigenen PC freigegebenen Ordner durch vb.net aufzulisten. Es sollte anschliessend in die rot markierte Textbox eingefügt werden:

20110510-114809-70.jpg


Also ist meine Frage, wie oder über was kann ich auf diese Ordner zugreifen?
In der Registry sind diese ja nicht gespeichert.


Freundliche Grüsse
MSeiz5
 
von vb habsch kein dunst, aber du könntest theoretisch über den cmd befehl "net share" die freigaben auslesen und dann parsen.
 
Vielen Dank erstmals für die schnellen Antworten.

@Easteregg
Dein Lösungsvorschlag werde ich am Schluss, wenn absolut nichts hilft einsetzen, da teilbestand der Aufgabe ist NUR mit vb.net zu arbeiten. Und nicht wie von dir vorgeschlagen Erebnisse von anderen (ausserhalb von vb.net) Befehlen auszuwerten und zu verwenden.

-> Sry, dass ich das nicht erwähnt habe ;)

@lookshe
Ich bin einer der erst ne weile googelt oder den Lehrlingsausbildner fragt. (Er weiss viel :D)
Auf die Seite die Du mir geschickt hast bin ich auch schon gestossen. Bei dem Beispielcode ist das Problem, dass Visual Studio den Fehler bringt
HTML:
"Der Typ "DirectoryEntry" ist nicht definiert"

Und ich habe auch schon versucht den Namespace System.DirectoryServices einzufügen, welcher bei mir aber nicht vorhanden ist oO. Auch selber eintragen nützt nichts.

Vielen Dank für die weitere Unterstützung / Tipps
MSeiz5
 
Da der Code letztendlich wohl nichts weiter macht, als die Registry auszuwerten, könntest du dies auch einfach selbst nachbauen. Unter HKLM\System\CurrentcontrolSet\Services\Lanmanserver\Shares findest du alle Freigaben und musst nur noch deine gewünschten Einträge parsen.
 
Kannst du dazu vielleicht mal ein wenig Beispielcode geben? Meist liegt sowas nämlich eher an Fehlern beim Coden.

Ach und welche Version vom Framework verwendest du?
 
@lookshe
Ok dan werde ich mal versuchen das Ganze aus der Registy zu parsen.

Ps. Deine Tastatur hat nen Tippfehler gemacht ;)

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\LanmanServer\Shares

@lightsaver
Den Code den ich gefunden habe ist von hier: Liste der vorhandenen Freigaben auf einem Computer: Codebeispiel für Visual Basic .NET (VB.NET) und CSharp (C#)
(Auch lookshe hat den bereits gepostet)

HTML:
Dim ofs As New _
DirectoryEntry("PFAD ZU LANMANSERVER")
Dim c As DirectoryEntries
Dim oshare As DirectoryEntry

c = ofs.Children

For Each oshare In c
  say(getAtt(oshare, "Name") & " zeigt auf " & _
  getAtt(oshare, "Path"))
Next

Ich verwende hier .NET FRAMEWORK 4.0


Vielen Dank,

Mseiz5
 
So ich habe es noch hinbekommen.

Für das Anzeigen der Freigegebenen Ordner (ohne die Standardfreigaben) in VBS:

Code:
strComputer = "."

   Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
   Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Share")
   
   For Each objItem In colItems
      if objItem.Type = 0 then
        strShare = strShare &  "Name: " & objItem.Name & vbCr
        strShare = strShare &  "Beschreibung: " & objItem.Description & vbCr
        strShare = strShare &  "Pfad: " & objItem.Path & vbCr & vbCr
      end if
   Next

   Set colItems = Nothing
   
WScript.Echo strShare
Und dasselbe umgeschrieben zu vb.net:

ACHTUNG: Der system.management muss noch hinzugefügt werden:

Code:
Dim strComputer As String = "."
Dim strShare As String = ""

Dim colItems As New ManagementObjectSearcher( _
    "\root\CIMV2", "SELECT * FROM Win32_Share")

For Each objItem As Object In colItems.Get()
    If objItem("Type") = "0" Then
        strShare = strShare & "Name: " & objItem("Name") & vbCrLf
                strShare = strShare & "Beschreibung: " & objItem("Description") & vbCrLf
                strShare = strShare & "Pfad: " & objItem("Path") & vbCrLf & vbCrLf
    End If

Next

colItems = Nothing

txtordner.Text = strShare
Freundliche Grüsse,
MSeiz5
 
Zurück
Oben