Tales from the Script

Juni 2005

Veröffentlicht: 30. Jun 2005
SG090301

von  The Scripting Guys

Alle auf Deutsch verfügbaren "Tales from the Script"-Kolumnen finden Sie hier.

*

Skripting des Internet Explorer-Popup-Blockers

Es gab in der Vergangenheit schon eine Menge toller und bekannter Spielautomaten (Pong, Asteroids, Space Invaders usw.) - aber es dürfte schwer fallen, einen lustigeren (und befriedigerenden) Spielautomaten als Whac-A-Mole zu finden. Für alle, die es nie gespielt haben, hier eine kurze Erklärung: Das Prinzip ist ziemlich einfach - Sie stehen vor dem Spielautomaten und halten eine Plastikkeule in der Hand. Diese ziehen Sie kleinen Plastikmaulwürfen, die aus den Löchern kommen, über die Rübe. Sie müssen die Maulwürfe erwischen, bevor diese wieder in den Löchern verschwinden. Klingt einfach - und das ist es auch - zumindest anfangs. Aber wie es mit Spielautomaten so ist ... Es wird permanent schwerer. Ziemlich bald strecken mehrere Maulwürfe gleichzeitig ihre Köpfe aus den Löchern, und jeder Maulwurf ist nur noch für ein paar Sekunden draußen. Das führt schon bald dazu, dass Sie einfach auf alles Sichtbare einschlagen - in der Hoffnung, dass es sich um einen Maulwurf handelt (Tipp: Es ist eine schlechte Idee, zu nahe am Whac-A-Mole-Spielautomaten zu stehen, wenn gerade jemand anderes spielt).

Disclaimer: Wie Sie sich wahrscheinlich denken können, kamen einige Bedenken bezüglich eines Spielautomaten auf, bei dem man einem Tier (und sei es auch nur aus Plastik) mit einer Keule auf den Kopf schlagen muss. Es gab einige Leute, die sich fragten, welchen Eindruck so etwas auf Jugendliche machen könnte. Die Scripting Guys habe dazu keine Theorie. Was allerdings die Plastikmaulwürfe betrifft ... Eines Tages werden Horden von marodierenden Plastikmaulwürfen durch die Gegend ziehen und fürchterlich Rache nehmen. Klingt unwahrscheinlich? Sie werden schon sehen ...

Im Internet-Zeitalter gibt es nun eine neuere High-Tech-Version dieses Spielautomaten: Whac-a-Popup. Alle was Sie dazu brauchen, ist ein Webbrowser. Sie müssen nun nur etwas im Web surfen, und früher oder später gehen überall die unterschiedlichsten neuen Browser-Fenster auf (normalerweise mit Werbung). Ziel dieses Spieles ist es, die ganzen Popup-Fenster zu schließen - und zwar, bevor entweder die Systemressourcen oder Ihre Geduld zu Ende gehen. Genau wie bei Whac-A-Mole wird auch dieses Spiel immer schwerer. Manchmal führt das Schließen eines Popups dazu, dass zwei oder drei neue aufgehen.

Popup-Fenster sind eine echte Plage geworden. Daher hat Microsoft einiges unternommen, um dieses Problem zu beseitigen. Wir haben mit Windows XP Service Pack 2 einen Popup-Blocker eingeführt und zwei weitere Popup-Blocker zusammen mit den zwei MSN-Toolbars.

Solche Popup-Blocker können in einem Unternehmen recht nützlich sein. Sie reduzieren den Stress, die Belastung und die Irritation der Benutzer. Soweit die guten Nachrichten. Unglücklicherweise gibt es auch schlechte. Möglicherweise möchten Sie die Popup-Blocker verwalten. Es könnte zum Beispiel Intranet- oder Internet-Sites geben, bei denen Popups angezeigt werden sollen. Für einen Benutzer ist es zwar ganz einfach, eine Site zur Liste der zugelassenen Sites hinzuzufügen, aber es ist eben immer noch der Benutzer, der diese Aufgabe ausführen muss (und auf den Sie sich verlassen müssen). Es wäre definitiv einfacher, wenn Sie als Systemadministrator für die Blockierung von Popups sorgen würden. Unglücklicherweise gibt es für keinen der drei oben erwähnten Popup-Blocker erwähnenswerte Verwaltungsmöglichkeiten.

Außerdem kann das gleichzeitige Verwenden der Popup-Blocker von Service Pack 2 und der Popup-Blocker der MSN-Toolbar zu Problemen führen - in diesem Fall müssen nämlich immer alle Popup-Blocker gleich konfiguriert werden. Daher möchten Sie als Systemadministrator wahrscheinlich nur einen Popup-Blocker verwenden. Und dies führt dazu, dass Sie feststellen möchten, welcher aktiviert ist und welcher nicht. Aber wie ohne die entsprechenden Verwaltungstools?

Genau: Sie können die verschiedenen Microsoft-Popup-Blocker mithilfe von Skripten verwalten. Es gibt zwar keine entsprechenden WMI-Klassen, aber die Popup-Blocker speichern ihre Konfiguration in der Registrierung. Somit haben wir die Möglichkeit, diese Konfigurationen mithilfe von Skripten zu bearbeiten.

Anmerkung: Dieser Artikel konzentriert sich auf die Konfiguration des Popup-Blockers von Windows XP Service Pack 2 und Windows Server 2003 Service Pack 1. Um den Popup-Blocker der MSN-Toolbar kümmern wir uns zwar nur ganz am Rande, aber stellen auf der Skripting-Website einige Beispielskripte hierfür zur Verfügung.

Zum SeitenanfangZum Seitenanfang

Kleiner Bonus: Sie lernen gleichzeitig, wie Sie die Registrierung mit Skripten bearbeiten

Der Artikel bezieht sich zwar auf die Verwaltung von Popup-Blockern mit Skripten, aber in diesem Rahmen haben wir gleichzeitig eine wunderbare Möglichkeit, über die Bearbeitung der Registrierung mithilfe von Skripten zu sprechen. Anfänger haben oftmals Probleme mit solchen Skripten. Das liegt zum einen daran, dass die Registrierung selbst ein wenig verwirrend ist, und zum anderen daran, dass Microsoft zwei unterschiedliche Skripting-Technologien anbietet: den Windows Script Host (WSH) und WMI. Mit beiden Technologien kann die Registrierung bearbeitet werden. Wir werden versuchen, diese Verwirrung etwas zu beseitigen. Daher als erste eine Empfehlung: Verwenden Sie WMI.

Warum? Nun, aus mindestens zwei Gründen (mal ganz abgesehen von dem großzügigen Schmiergeld, das wir vom WMI-Team für diese Aussage erhalten haben):

WMI hat bezüglich der Bearbeitung der Registrierung mehr Möglichkeiten als der WSH. WMI verfügt zum Beispiel über eine standardmäßige Funktion, mit der alle Unterschlüssel eines Registrierungsschlüssels aufgelistet werden können. Der WSH nicht.

Mit WMI kann die Registrierung auf Remotecomputern genauso einfach bearbeitet werden wie die lokale Registrierung. Der WSH kann hingegen nur die lokale Registrierung bearbeiten.

Wir sollten jedoch erwähnen, dass WMI etwas schwieriger als der WSH zu handhaben ist. Das liegt daran, dass es beim WSH normalerweise nur zwei verschiedene Funktionen für einen Aufgabenbereich gibt (zum Beispiel RegRead zum Lesen von Registrierungswerten und RegWrite zum Schreiben). Bei WMI gibt es nicht nur zwei Funktionen, sondern diese beiden Funktionen sind jeweils für jeden möglichen Registrierungs-Datentyp vorhanden. Die verschiedenen WMI-Funktionen sehen Sie in der nachfolgenden Tabelle.

Datentyp Lesen Schreiben

REG_SZ

GetStringValue

SetStringValue

REG_EXPAND_SZ

GetExpandedStringValue

SetExpandedStringValue

REG_BINARY

GetBinaryValue

SetBinaryValue

REG_DWORD

GetDWORDValue

SetDWORDValue

REG_MULTI_SZ

GetMultiStringValue

SetMultiStringValue

Das klingt vielleicht erstmal etwas mühsam, und Sie werden die Tabelle möglicherweise am Anfang ein paar Mal zur Hand nehmen müssen. Auf der Habenseite steht bei WMI jedoch, dass alle WMI-Skripte einem bestimmten Muster folgen. Ein Skript zur Bearbeitung eins Registrierungswertes müsste zum Beispiel folgendermaßen aufgebaut sein:

Definition einer Konstante, die den zu bearbeitenden Teil der Registrierung festlegt (zum Beispiel HKEY_CURRENT_USER oder HKEY_LOCAL_MACHINE).

Festlegen des Computers, gegen den das Skript ausgeführt werden soll (lokal oder remote).

Verbinden mit der Klasse StdRegProv (im Namespace root\default).

Zuweisen von Werten zu Konstanten für den Registrierungspfad, den Namen des Registrierungswertes und dessen neuen Wert.

Aufrufen der entsprechenden Funktion (zum Beispiel SetDWORDValue).

Wie Sie weiter unten in diesem Artikel sehen werden, folgen Skripte, die aus der Registrierung lesen, einem gleichen Muster.

Anmerkung: Weitere Informationen bezüglich Skripts zur Bearbeitung des Registrierung finden Sie im Kapitel Registry des Microsoft Windows 2000 Scripting Guide (englischsprachig).

Steht da etwa einigen von Ihnen die Panik ins Gesicht geschrieben? Sie haben gehört, niemals die Registrierung bearbeiten? Scripting Guy Peter Costantini bringt zum Beispiel gern ein Zitat von Mark Minasi, der einmal sagte, das Bearbeiten der Registrierung könne sogar zu unfreiwilligen Änderungen des Geschlechtes bei Wüstenmäusen führen. (Ob das stimmt? Nun, um ehrlich zu sein, möchten wir darüber lieber nicht nachdenken müssen.) Das Kapitel zur Bearbeitung des Registrierung im Windows 2000 Scripting Guide beginnt sogar mit einem großen Disclaimer. (In diesem steht ungefähr: "In diesem Kapitel erfahren Sie, wie sie die Registrierung mit Skripten bearbeiten können. Was auch immer Sie nach dem Lesen vorhaben - schreiben Sie auf keinen Fall Skripte, mit denen Sie die Registrierung bearbeiten.") Mit anderen Worten, wenn wir Sie dazu ermuntern, die Registrierung mit Skripten zu bearbeiten, ist das dann nicht genau so, als würden wir Ihnen empfehlen, Süßigkeiten von fremden Männern anzunehmen?

Anmerkung: Nein, ist es nicht. Zumindest so lange die Fremden nicht Snickers oder Mars verteilen.

Wenn es eine andere Möglichkeit gibt, als die Registrierung über WMI-Klassen oder COM-Objekte zu bearbeiten, dann sollten Sie diese wahrnehmen. Außerdem sollten Sie alle Skripte auf einem Testcomputer testen, bevor Sie diese auf den echten Computern ausführen. Abgesehen davon ist die Bearbeitung der Registrierung jedoch nicht gefährlicher als andere Aktivitäten im Rahmen der Systemadministration.

Zum SeitenanfangZum Seitenanfang

Sie brauchen nur einen Popup-Blocker

Wie wir bereits erwähnt haben, ist es besser, nur einen Popup-Blocker zu verwenden. Wir gehen in diesem Artikel davon aus, dass Sie den standardmäßigen Popup-Blocker von Windows XP Service Pack 2 und Windows Server 2003 Service Pack 1 nutzen wollen. Das bedeutet, Sie müssen feststellen, ob einer der MSN-Popup-Blocker ausgeführt wird, und diesen gegebenenfalls deaktivieren.

Mit dem folgenden Skript können Sie feststellen, ob einer dieser Popup-Blocker installiert ist. Wir werden es nicht detaillierter besprechen. Weitere Informationen dazu, wie Sie abfragen können, ob ein bestimmter Registrierungswert vorhanden ist (genau dies macht das Skript), finden Sie in diesem Artikel. Das Skript gibt den Wert des Registrierungswertes HKCU\Software\Microsoft\MSN Apps\MSN Popup Blocker\Enabled zurück. Wenn es sich um Null handelt, bedeutet das, dass der Wert nicht vorhanden ist. Bei einem Wert ungleich Null ist er vorhanden.

Const HKEY_CURRENT_USER = &H80000001

strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\MSN Apps\MSN Popup Blocker"
strValueName = "Enabled"
objRegistry.GetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

If IsNull(dwValue) Then
    Wscript.Echo "The registry key does not exist."
Else
    Wscript.Echo "The registry key exists."
End If

Lassen Sie uns nun für den Augenblick annehmen, dass der Registrierungswert vorhanden ist (der MSN-Toolbar-Popup-Blocker ist also installiert), und dass wir sicherstellen wollen, dass er deaktiviert ist.

Nicht sehr schwer. Wir müssen nur den Wert von Enabled auf 0 setzen:

Const HKEY_CURRENT_USER = &H80000001

strComputer = "."
 
Set objRegistry=GetObject("winmgmts:\\" & _
    strComputer & "\root\default:StdRegProv")
 
strKeyPath = "Software\Microsoft\MSN Apps\MSN Popup Blocker"

strValueName = "Enabled"
dwValue = 0

objRegistry.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

Anmerkung: Wenn Sie den Popup-Blocker wieder aktivieren möchten, brauchen Sie den Wert nur wieder auf 1 setzen.

Das Skript deaktiviert nicht nur den MSN-Toolbar-Popup-Blocker, sondern soll uns auch als Grundlage für Skripte dienen, mit denen wir die Registrierung bearbeiten. Es beginnt damit, dass der Konstante HKEY_CURRENT_USER der Wert &H80000001 zugewiesen wird. Diese Konstante sagt dem Standard-Registry-Provider, in welchem Teil der Registrierung er suchen soll (wenn wir mit HKEY_LOCAL_MACHINE arbeiten wollten, müssten wir den Wert &H80000002 verwenden). Nachdem wir uns mit dem WMI-Dienst verbunden haben (der Standard-Registry-Provider ist im Namespace root\default zu finden), definieren wir drei Variablen:

VariableBeschreibung

strKeyPath

Pfad zum Registrierungsschlüssel, unter dem der Registrierungswert zu finden ist. Wir müssen HKEY_CURRENT_USER nicht mit angeben (diese geschieht später) und auch kein \ am Ende anhängen.

strValueName

Der zu konfigurierende Registrierungswert (in diesem Beispiel Enabled).

dwValue

Der Wert, auf den der Registrierungswert gesetzt werden soll (0).

Als nächstes folgt eine Codezeile, in der die Funktion SetDWORDValue aufgerufen wird. Sie konfiguriert den Registrierungswert:

objRegistry.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

Und das war's auch schon.

Anmerkung: Warum haben wir SetDWORDValue verwendet? Wenn Sie sich noch mal die Tabelle mit den WMI-Funktionen anschauen, dann stellen Sie fest, dass zur Bearbeitung von Registrierungswerten des Datentyps REG_DWORD die Funktion SetDWORDValue verwendet werden muss.

Die zweite MSN-Toolbar wird über einen Registrierungswert mit dem Namen PopupGuardStatus gesteuert. Sie finden ihn unter HKEY_CURRENT_USER\Software\Microsoft\MSN Toolbar. Es handelt sich wieder um einen DWORD-Wert, und mit 0 wird der Popup-Blocker wiederum deaktiviert.


Const HKEY_CURRENT_USER = &H80000001

strComputer = "."
 
Set objRegistry=GetObject("winmgmts:\\" & _
    strComputer & "\root\default:StdRegProv")
 
strKeyPath = "Software\Microsoft\MSN Toolbar"

strValueName = "PopupGuardStatus"
dwValue = 0

objRegistry.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

Vergleichen Sie die beiden Skripte, und Sie werden nur zwei Unterschiede sehen: Den zu strKeyPath zugewiesenen Wert (der Pfad) und den zu strValueName zugewiesenen Wert (der geänderte Registrierungswert). Alles andere ist gleich. Mit diesen beiden Skripten als Vorlage können Sie nun jeden beliebigen Registrierungswert bearbeiten. Wollen Sie zum Beispiel einen REG_DWORD-Wert bearbeiten, müssen Sie nur Folgendes ändern:

Die Konstante von HKEY_CURRENT_USER auf HKEY_LOCAL_MACHINE (wenn nötig)

Den Wert von strKeyPath.

Den Wert von strValueName.

Den Wert von dwValue.

Das ist alles. Und genau darum verwenden wir WMI.

Zum SeitenanfangZum Seitenanfang

Aktiveren des Popup-Blockers

Da wir die MSN-Popup-Blocker nun deaktiviert haben, sollten wir sicherstellen, dass der Windows XP Service Pack 2-Popup-Blocker auch ausgeführt wird. Service Pack 2 speichert die entsprechenden Informationen ebenfalls in der Registrierung - jedoch etwas versteckter. Sie finden sie unter HKCU\Software\Microsoft\Internet Explorer\New Windows. Um den Popup-Blocker zu aktivieren, müssen Sie den Wert PopupMgr auf yes setzen. Das folgende Skript macht genau dies.


Const HKEY_CURRENT_USER = &H80000001

strComputer = "."
 
Set objRegistry=GetObject("winmgmts:\\" & _
    strComputer & "\root\default:StdRegProv")
 
strKeyPath = "Software\Microsoft\Internet Explorer\New Windows"

strValueName = "PopupMgr"
strValue = "yes"
objRegistry.SetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,strValue

Was macht das Skript anders? Nur eine einzige Sache: Der Wert PopupMgr hat den Datentyp REG_SZ (String bzw. Zeichenkette). Wenn wir noch einmal auf die Tabelle oben schauen, dann sehen wir, dass bei diesem Datentyp die Funktion SetStringValue verwendet werden muss.

Wir haben zwar zusätzlich die Namen der Variable dwValue in strValue geändert, aber das ist reine Kosmetik - es ist nicht zwingend notwenig.

Wenn Sie den Popup-Blocker deaktivieren möchten, dann setzen Sie den Wert auf no.

Natürlich wollen Sie nicht nur in die Registrierung schreiben. Manchmal reicht es, einen Wert auszulesen. Wenn Sie wissen möchten, ob der Popup-Blocker konfiguriert ist oder nicht, dann verwenden Sie dieses Skript:


Const HKEY_CURRENT_USER = &H80000001

strComputer = "."
 
Set objRegistry=GetObject("winmgmts:\\" & _
    strComputer & "\root\default:StdRegProv")
 
strKeyPath = "Software\Microsoft\Internet Explorer\New Windows"

strValueName = "PopupMgr"
objRegistry.GetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,strValue 

Wscript.Echo "Popup blocker enabled: " & strValue

Wie unterscheidet es sich von den anderen Skripten? Zum einen verwenden wir andere Funktionen. Da wir Werte auslesen wollen (im Gegensatz zum Schreiben von vorhin), nutzen wir die Funktion GetStringValue. Zum zweiten legen wir für strValue keinen Wert fest (vorher speicherte diese Variable den zu schreibenden Wert). Und schlussendlich geben wir in der letzten Zeile den Wert von strValue - obwohl wir dieser Variable keinen Wert zuweisen.

Warum? Die Variable strValue ist in diesem Fall ein Ausgabeparameter. Werte, die beim Aufrufen einer Funktion verwendet werden, sind Eingabeparameter (in diesem Beispiel waren das HKEY_CURRENT_USER, strKeyPath und strValueName). Eingabeparametern weisen Sie Werte zu, und diese übergeben die Werte dann an die Funktion. Ausgabeparametern (strValue) weisen Sie hingegen keine Werte zu - die Parameter übergeben nur den Variablennamen an die Funktion. Erst von der Funktion wird dem Ausgabeparameter ein Wert zugewiesen (in diesem Fall der Wert des Registrierungswertes Software\Microsoft\Internet Explorer\New Windows\PopupMgr).

Zum SeitenanfangZum Seitenanfang

Konfiguration des Popup-Blockers

Service Pack 2 gibt ihnen nicht nur die Möglichkeit, den Popup-Blocker zu aktivieren und zu deaktivieren, sondern Sie können auch Popups für einzelne Sites blockieren. Im Internet Explorer klicken Sie hierzu auf Extras, Popupblocker, Popupblockereinstellungen. Die Registrierungswerte entsprechen den folgenden Konfigurationselementen:

Popup-Blocker-Einstellungen

Keine Panik. In der folgenden Tabelle finden Sie eine Beschreibung der Registrierungswerte.

WertBeschreibung

PlaySound

Legt fest, ob ein Sound abgespielt wird, wenn ein Popup blockiert wird (1 ja, 0 nein).

UseSecBand

Legt fest, ob eine Nachricht beim Blockieren eines Popups angezeigt wird (1 ja, 0 nein).

BlockUserInit

Legt fest, ob durch den Benutzer ausgelöste Popups (zum Beispiel durch Klicken oder über Hyperlinks) blockiert werden (1 alle Popups werden blockiert, 0 entsprechende Popups werden zugelassen).

UseHooks

Legt fest, ob die von und zu ActiveX-Steuerelemente gesendeten Nachrichten überwacht werden (1 ja, 0 nein). Wenn die Eigenschaft deaktiviert ist, können ActiveX-Steuerelemente möglicherweise keine neuen Fenster öffnen.

UseTimerMethod

Legt fest, ob ein Timer zu Erkennung asynchroner Popups, die durch Aktionen des Benutzers auftreten, verwendet wird (zum Beispiel Websites, die nach der Übermittlung eines Formulars ein Bestätigungs-Popup anzeigen).
Wenn Sie diese Eigenschaft aktivieren (1), dann sollten Sie auch den DWORD-Wert UserInitTimeout konfigurieren (Zeit für den Timeout in Millisekunden zwischen der Aktion des Benutzers und dem Auftauchen des Popups).

AllowHTTPS

Legt fest, ob Popups über https-Verbindungen automatisch zugelassen sind (1 zugelassen, 0 gleiche Regeln wie für andere Popups).

Da es ausschließlich um DWORD-Werte handelt, können Sie die Werte über GetDWORDValue lesen und über SetDWORDValue schreiben. Das folgende Beispielskript liest den Wert von PlaySound aus:

Const HKEY_CURRENT_USER = &H80000001

strComputer = "."
 
Set objRegistry=GetObject("winmgmts:\\" & _
    strComputer & "\root\default:StdRegProv")
 
strKeyPath = "Software\Microsoft\Internet Explorer\New Windows"

strValueName = "PlaySound"
objRegistry.GetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue 

Wscript.Echo "Play a sound when a popup is blocked: " & dwValue

Das nächste Skript deaktiviert den Sound beim Blockieren eines Popups:

Const HKEY_CURRENT_USER = &H80000001

strComputer = "."
 
Set objRegistry=GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
 
strKeyPath = "Software\Microsoft\Internet Explorer\New Windows"

strValueName = "PlaySound"
dwValue = 0
objRegistry.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

Es ist genauso einfach, wie es aussieht. Wie Sie sehen, sind alle Skripte nach dem gleichen Muster aufgebaut und basieren auf der gleichen Vorlage.

Zum SeitenanfangZum Seitenanfang

Festlegen der Filterungsstufe

Für die Einstellung Filterungsstufe gibt es drei Optionen: Hoch, Mittel und Niedrig. Für diese Einstellung gibt es keinen einzelnen Registrierungswert. Stattdessen wird die Filterungsstufe durch vier Registrierungswerte bestimmt. 1 bedeutet, dass das Feature aktiviert ist, und 0, dass es deaktiviert ist.

Wert Hoch Mittel Niedrig

BlockUserInit

1

0

0

UseTimerMethod

0

0

1

UseHooks

0

1

1

AllowHTTPS

0

0

1

Das bedeutet zum Beispiel, dass - wenn BlockUserInit aktiviert und alles andere deaktiviert ist - die Filterungsstufe Hoch ist. Wenn nur UseHooks aktiviert ist, ist die Filterungsstufe Mittel.

Sie sind nicht auf die in der Tabelle gezeigten Kombinationen beschränkt. Wenn Sie zum Beispiel nur AllowHTTPS aktivieren, dann wird die Filterungsstufe als Benutzerdefiniert angezeigt.

Ein entsprechendes Skript muss nur alle vier Registrierungswerte konfigurieren. Das folgende Beispielskript legt die Filterungsstufe Hoch fest. Hierzu legt es den Wert von BlockUserInit mit 1 und alle anderen Werte mit 0 fest.

Const HKEY_CURRENT_USER = &H80000001

strComputer = "."
 
Set objRegistry=GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
 
strKeyPath = "Software\Microsoft\Internet Explorer\New Windows"

strValueName = "BlockUserInit"
dwValue = 1
objRegistry.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

strValueName = "UseTimerMethod"
dwValue = 0
objRegistry.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

strValueName = "UseHooks"
dwValue = 0
objRegistry.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

strValueName = "AllowHTTPS"
dwValue = 0
objRegistry.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
Zum SeitenanfangZum Seitenanfang

Popups von bestimmten Websites zulassen

Da wir die Grundkonfiguration nun beherrschen, können wir uns den richtigen Sachen zuwenden: Das Hinzufügen einzelner Sites zur Liste der zugelassenen Websites.

Hierzu sind allerdings ein paar kleine Erklärungen nötig. Die zugelassenen Sites werden unter Software\Microsoft\Internet Explorer\New Windows\Allow gespeichert. Jede zugelassene Site wird als Registrierungswert gespeichert. Das macht so weit Sinn. Einziges Problem dabei: Die Registrierungswerte sind "Binärwerte der Länge Null". Unter Windows Server 2003 sieht das dann so aus:

Popup-Blocker-Einstellungen

Wir wissen, was Sie jetzt denken: "Moment mal, meine lieben Scripting Guys. Niemand hat bis jetzt etwas von Binärwerten der Länge Null erwähnt". Stimmt. Haben wir nicht. Es ist jedoch ziemlich simpel - zwei kleine Änderungen reichen, um solche Werte in die Registrierung schreiben zu können.

Bevor wir zu langen Erklärungen ansetzen, sehen Sie hier ein Skript, dass die Site www.microsoft.com zur Liste der zugelassenen Sites hinzufügt:

Const HKEY_CURRENT_USER = &H80000001

strComputer = "."
 
Set objRegistry=GetObject("winmgmts:\\" & _ 
    strComputer & "\root\default:StdRegProv")
 
strKeyPath = "Software\Microsoft\Internet Explorer\New Windows\Allow"
strValueName = "www.microsoft.com"
strValue = Array()
objRegistry.SetBinaryValue HKEY_CURRENT_USER,strKeyPath, _
    strValueName,strValue

Also, wie gehen wir vor? Als Erstes müssen wir die Funktion SetBinaryValue verwenden - das haben Sie sich wahrscheinlich selbst schon gedacht (ein Binärwert der Länge Null ist nebenbei nur ein Binäreintrag ohne Inhalt). Zweitens (und das ist etwas komplizierter) müssen wir den Wert Null in die Variable strValue schreiben:

strValue = Array()

Im Datentyp REG_BINARY werden normalerweise Arrays mit Zahlen gespeichert. Daher müssen wir dem Registrierungswert einen Array übergeben. Mit Array() erstellen wir daher einfach einen leeren Array.

Was, wenn Sie eine Site aus der Liste entfernen wollen? Nun, das ist etwas einfacher:

Const HKEY_CURRENT_USER = &H80000001

strComputer = "."
 
Set objRegistry=GetObject("winmgmts:\\" & _ 
    strComputer & "\root\default:StdRegProv")
 
strKeyPath = "Software\Microsoft\Internet Explorer\New Windows\Allow"
strValueName = "www.microsoft.com"

objRegistry.DeleteValue HKEY_CURRENT_USER,strKeyPath,strValueName

Wie Sie sehen, erstellen wir einfach eine Bindung an den entsprechenden Registrierungswert (www.microsoft.com in unserem Fall). Dann rufen wir die Funktion DeleteValue auf und löschen den Wert. Alternativ können Sie sich ein Skript schreiben, das alle Einträge durchläuft und diese löscht. Wie Sie das machen, lassen wir Sie aber selbst herausfinden. (Kleiner Hinweis: Dieses Skript listet alle Werte unter einem Registrierungsschlüssel auf.)

Zum SeitenanfangZum Seitenanfang

Fragen? Kommentare?

Das soll es für diesen Monat gewesen sein. Wenn Sie Fragen oder Kommentare zu diesem Artikel haben, dann schreiben Sie uns bitte unter scripter@microsoft.com (bitte nur in englischer Sprache). Und nehmen Sie sich vor den marodierenden Plastikmaulwürfen in Acht...


Zum SeitenanfangZum Seitenanfang