Freigabe von Ordnern automatisch zurücksetzen

Während Ihrer Arbeit geben Sie manchmal einzelne Ordner auf Ihrem System frei, so dass Ihre Kollegen darauf zugreifen können. Diese Freigaben sollen aber zeitlich begrenzt sein. Beim nächsten Systemstart möchten Sie sicher sein, dass Ihr Rechner wieder gesperrt ist.

Unter Windows 2000 und XP können Sie das Zurücksetzen freigegebener Ordner mit Hilfe einer VBScript-Anwendung und dem Windows Scripting Host erledigen. Geben Sie in einem beliebigen Text-Editor – zum Beispiel Notepad – die folgenden Anweisungen ein und speichern Sie die Datei unter dem Namen NETWORK.VBS (Sie finden sowohl das Listing als auch die fertige Datei auf der Heft-CD unter CHIP-Code PRAXIS09).


Option Explicit

dim objNetwork, objLanman, objShare
dim szComputerName, szMeldung
dim intZaehler

On Error Resume Next

intZaehler = 0
set objNetwork = CreateObject("Wscript.Network")
szComputerName = objNetwork.ComputerName

set objLanman = GetObject("WinNT://" & szComputerName & "/LanmanServer")

for each objShare in objLanman

szMeldung = "Die Freigabe des Ordners " & objShare.path & " (" & objShare.name ") zurücknehmen?"
if err.number = 0 then intZaehler = intZaehler + 1
if Msgbox(szMeldung,vbYesNo) = vbYes then

objLanman.Delete "fileshare", objShare.name

end if
end if
next

if intZaehler = 0 then

szMeldung = "Auf " & szComputerName & " wurden keine freigegebenen Ordner gefunden!"

Msgbox(szMeldung)

end if

Richten Sie außerdem im Ordner AUTOSTART eine Verknüpfung auf diese Datei ein, so dass Windows sie beim Systemstart automatisch ausführt.
Zur Erklärung: Das Skript nutzt das Active Directory Service Interface (ADSI), eine Schnittstelle für den Zugriff auf die Verzeichnisdienste von Windows 2000 und XP. Um das Objekt »objLanman« als ADSI-Referenz für den Zugriff auf Windows-Verzeichnisse zu verwenden, muss der Namen Ihres Computers bekannt sein. Deshalb erzeugt das Skript zuerst das Objekt »objNetwork« vom Typ »Wscript.Network« und schreibt dann die Eigenschaft »ComputerName« in die Variable »szComputerName«. Jetzt kann »objLanman« mit dem Wert »"WinNT://" & szComputerName & "/LanmanServer"« erzeugt werden, wobei »WinNT://« den ADSI-Provider angibt.

Für jedes freigegebene Verzeichnis legt »objLanman« ein Objekt »objShare« an. Diese Objekte verarbeitet das Skript dann nacheinander in einer »for each«-Schleife und kann dabei die Freigabe mit der Methode »Delete "fileshare", objShare.name« von »objLanman« zurücksetzen. Der Benutzer muss dies in jedem Fall per Dialog bestätigen.

Da unter Windows 2000 auf diese Weise auch Systemfreigaben gefunden werden, kann der Zugriff auf die Eigenschaften von »objShare« einen Absturz verursachen. Deshalb fragt das Skript nach dem ersten Zugriff auf diese Eigenschaften den Fehlercode ab und führt die nächsten Anweisungen nur bei erfolgreicher Durchführung des Befehls aus.