Logo faq-o-matic.net
Logo faq-o-matic.net

Ist ein bestimmter Ordner freigegeben?

von veröffentlicht am9. Juli 2006, 16:06 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Scripting, VBScript   Translate with Google Translate Translate EN   Die angezeigte Seite drucken

Auf einem Dateiserver, der sehr viele Freigaben enthält, ist es nicht immer einfach herauszufinden, ob ein bestimmter Ordner freigegeben ist oder nicht. Oft wird man nicht drumherumkommen, eine RDP-Verbindung zu dem Server zu öffnen und im Explorer nachzusehen, oder man bemüht die Computerverwaltung mit Verbindung auf den Server und schaut unter "Freigaben" nach.

Das folgende Skript bietet eine Alternative. Es liest über WMI die Freigaben eines beliebigen Servers aus uns schreibt die Namen sowie die jeweils freigegebenen Ordner in zwei Dictionary-Objekte. Auf diese Weise kann mit recht einfachen Abfragen festgestellt werden, ob bestimmte Ordner freigegeben sind, und wenn ja, unter welchem Namen.

Das Skript
  1. ' Beispielaufrufe
  2.  
  3. Set osP = CreateObject("Scripting.Dictionary") ' Freigaben über den Pfad
  4. Set osN = CreateObject("Scripting.Dictionary") ' Freigaben über Namen
  5. ok = ShareDictsInit( ".", osN,osP) ' Listen einlesen
  6.  
  7. text = ""
  8. for each share in osP
  9.     text = text & share & ": " & osP.Item(share) &vbCrLf
  10. NEXT
  11.  
  12. msgbox text
  13.  
  14. text = ""
  15. for each share in osN
  16.     text = text & share & ": " & osN.Item(share) &vbCrLf
  17. NEXT
  18.  
  19. msgbox text
  20.  
  21. '#########################################################
  22.  
  23. Function ShareDictsInit(sServer, oShareNameDict, oSharePathDict)
  24. ' Freigaben in Dictionary ablegen
  25. ' Autor: Martin Resch, http://ml-tipps.de, 6/2006
  26.  
  27. ' Parameter: Servername (String), angelegte Dictionary-Objekte nach Name
  28. ' bzw. Pfad
  29. ' Rueckgabe: "ok" oder Fehlerbeschreibung
  30.  
  31. const HKEY_LOCAL_MACHINE = &H80000002
  32. ShareDictsInit = "ok"
  33. ON ERROR RESUME NEXT
  34. Set FSO = CreateObject("Scripting.FileSystemObject")
  35.  
  36.  
  37.  
  38. Set oReg=GetObject("winmgmts:" _
  39.     & "{impersonationLevel=impersonate}!\\" &_
  40.     sServer & "\root\default:StdRegProv")
  41. IF err.Number <> 0 THEN
  42.     ShareDictsInit = err.Description
  43.     exit function
  44. END IF
  45.  
  46.    
  47. strKeyPath = "SYSTEM\CurrentControlSet\Services\LanManServer\Shares"
  48. oReg.EnumValues HKEY_LOCAL_MACHINE, _
  49.     strKeyPath, arrValueNames, arrValueTypes
  50.  
  51. For i=0 to UBound(arrValueNames)
  52.     oReg.GetMultiStringValue _
  53.         HKEY_LOCAL_MACHINE, _
  54.         strKeyPath,arrValueNames(i), _
  55.         arrValues
  56.     shname = arrValueNames(i)
  57.     shdir = split(arrValues(2),"=")(1)
  58.  
  59.  
  60.     IF Mid(shdir,2,1) = ":" THEN
  61.         If not fso.FolderExists(shdir)  Then
  62.             shDir = "" ' ungueltige Freigabe
  63.         ELSE
  64.             IF not oSharePathDict.exists(shdir) THEN
  65.                 oSharePathDict.Add shDir, shName
  66.             ELSE
  67.               oSharePathDict.Item(shDir) = _       
  68.  
  69.               oSharePathDict.Item(shDir) & "|" & shName
  70.             END IF
  71.         END IF
  72.     End If
  73.     oShareNameDict.Add shName, shDir
  74.    
  75.         IF err.Number <> 0 THEN
  76.         ShareDictsInit = err.Description
  77.         exit function
  78.     END IF
  79.  
  80. Next
  81. END function

© 2005-2023 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!