Wer mit Microsoft Office Access die ein oder andere Anwendung oder Datenbank schreibt, stößt spätestens mit der Version 2003 auf das Problem, daß beim öffnen der Datenbank läßtige Warnmeldungen wie z.B. die oben beschriebenen erscheinen, welche vom Benutzer erst mal alle in der korrekten Weise bestätigt werden müßen, bevor die Anwendung/Datenbank endlich öffnet... Das sind schon mal vier bis fünf Klicks...
Das ist nicht nur läßtig sondern für die meisten Anwender/Anwenderinnen einfach zu viel verlangt.
Einer der einfacheren Wege ist nun die Makrosicherheit zu reduzieren in dem man in Access unter Sicherheit die Einstellung ändert. Dies muß dann aber für jeden einzelnen Benutzer gemacht werden. Wenn das Netzwerk keine wandernden Profile unterstützt, zudem an allen PC's für jeden Benutzer. Oft wird der Eintrag für die Sicherheitseinstellungen im Access Menü gar nicht angezeigt und man muß diesen erst mühevoll mit rechtsklick und Menü Anpassen hinzu fügen. Tja, und das nächste Office Update macht dies dann alles wieder Rückgängig.
Und was ist wenn die User nur eine der kleineren Office Versionen im Einsatz hat und man diesem die Access Runtime ab Version 2003 zur Verfügung stellt? Dort gibt es diesen Menüeintrag nicht und das Menü läßt sich auch nicht bearbeiten/anpassen! In einem Microsoft Artikel hierzu habe ich mal gelesen man solle die Access Vollversion installieren, dann die Sicherheitseinstellungen anpassen und anschliesend wieder die Runtime installieren. Das kann es wirklich nicht sein - oder?
Um all dem aus dem Weg zu gehen habe ich euch den Registre Eintrag für Windows XP ausfindig gemacht, welcher euch sowohl in der Runtime als auch in der Vollversion, die Sicherheitseinstellungen auf niedrig setzt und eure Datenbank bzw. eure Access Anwendung wieder sofort ohne Meldungen starten läßt:
Klicke die eben gespeicherte Access2003_low_secure_level.reg nun doppelt an und bestätige die Sicherheitsfrage mit "JA".
Das neue "NIEDRIGE" Sicherheits Level greift sofort ohne Neustart beim nächsten Aufrufen von Access 2003 oder Access Runtime 2003.
Unter dem Schlüßel: [HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Access\Security] (Wenn nicht vorhanden dann anlegen)
Einen neuen Wert vom Typ DWORD anlegen und den Wert Hexadezimal "1" hinterlegen.
Wer den Registrie Eintrag per Batch Datei ohne Bestätigung des Users übergeben/setzen möchte findet >unter diesem Link eine Anleitung wie dies aus einer Batch heraus geht.
Hier abschliesend noch noch die Umschreibung des 'Sandbox' Modus, welcher eben dieses Problem unter einem (warum auch immer) anderen Begriff umschreibt: (Den Topic habe ich gefunden auf http://www.office-loesung.de , hier noch der direkte Link zum Topic: http://www.office-loesung.de/ntopic35402.php)
Geheimnis gelueftet: 'Sandbox'-Modus optimal nutzen, Teil 1
-----------------------------------------------------------
Versionen: Access 97, 2000, 2002/XP und 2003
Aus anderen Office-Anwendungen wie Word oder Excel sind Sie
bereits an Sicherheitsmechanismen gewoehnt: Dort weist Sie
der Makrovirenschutz darauf hin, wenn Dokumente Makros
enthalten, die Ihrem System eventuell Schaden zufuegen
koennen. Sie haben dann die Wahl, das Dokument gar nicht,
mit deaktivierten oder mit aktivierten Makros zu oeffnen.
Fuer Access hat Microsoft einen Makrovirenschutz
unverstaendlicherweise erst mit Access 2003 eingefuehrt,
denn auch bei Access besteht seit jeher die Gefahr, dass
beim Oeffnen einer Datenbank ueber ein "AutoExec"-Makro VBA-
Routinen automatisch und vom Anwender unbemerkt ausgefuehrt
werden koennen. Was allerdings nicht bedeutet, dass Access
97, 2000 und 2002 vollkommen schutzlos dastehen. Vielmehr
hat Microsoft bereits vor laengerem einen Schutzmechanismus
fuer Access eingefuehrt, den allerdings kaum kannte. Erst
mit der Einfuehrung von Access 2003 bekommt dieser
Schutzmechanismus die ihm zustehende Aufmerksamkeit. Das
aber auch nur, weil viele Access 2003-Anwender sich durch
ihn gestoert fuehlen.
Die Rede ist vom so genannten Sandbox-Modus, dessen
Aktivierung Access 2003 seinen Nutzern geradezu penetrant
bei jedem Start per Sicherheitswarnung ans Herz legt.
Dadurch ist der Eindruck entstanden, dass dieser
Schutzmechanismus erst mit Access 2003 eingefuehrt wurde. Im
Grunde handelt es sich jedoch beim Sandbox-Modus um einen
Schutzmechanismus der Jet Engine, den diese bereits seit
1999 bereitstellt und den auch Access 97, 2000 und 2002
nutzen koennen. Sicherheitsexperten hatten derzeit
herausgefunden, dass ueber so genannte "unsichere
Ausdruecke" aus Access-Datenbanken heraus beliebige VBA- und
DOS-Befehle auf einem System ausgefuehrt werden koennen. Ein
unsicherer Ausdruck waere zum Beispiel die folgende
Anweisung in einer SQL-Abfrage:
SELECT Shell("Command.com /c dir X:\*.*")
As Dummy From Tabelle;
SQL-Abfragen und darin verwendete Funktionen werden ueber
die Jet-Engine interpretiert und ausgefuehrt. In diesem Fall
wuerde ein Aufruf der Shell-Funktion erfolgen. Diese
Anweisung oeffnet ein DOS-Fenster und zeigt dort das
Verzeichnis von Laufwerk "X:" an. Genauso gut koennte aber
auch der DOS-Befehl "del" aufgerufen werden, der Dateien auf
dem System loescht.
Beim Oeffnen einer Datenbank, vor allem wenn sie aus
unbekannter Quelle stammt, besteht also immer die Gefahr,
dass auf diesem Wege Daten und System Schaden zugefuegt
wird. Microsoft hat deshalb die Jet-Engine um den erwaehnten
Sandbox-Modus erweitert, in dem derartige Anweisungen in
Ausdruecken nicht mehr ausgefuehrt werden. Neben der
Ausfuehrung von Funktionen in SQL-Abfragen blockiert der
"Sandbox"-Modus die Ausfuehrung von Funktionen in
Ausdruecken, die Eigenschaften oder Ereignisprozeduren von
Steuerelementen, Formularen oder Berichten zugewiesen
wurden. Zum Beispiel:
Standardwert: "=Shell("Command.com /c dir X:\*.*")")
Bei Fokuserhalt: "=Shell("Command.com /c dir X:\*.*")").
Blockiert werden in Ausdruecken neben einigen
"gefaehrlichen" VBA-Funktionen wie "Shell", "Kill",
"FileCopy", "DeleteSetting" oder "SendKeys" auch
verschiedene Objekte und Methoden wie "DBEngine",
"FileSearch", "CompactRepair", "FollowHyperlink" oder
"DDEExecute". Insgesamt umfasst die Liste der blockierten
Funktionen, Objekte und Methoden ueber 60 Eintraege. Eine
detaillierte Aufstellung finden Sie in den folgenden
Knowledge Base-Beitraegen:
Access 97: http://support.microsoft.com/default.aspx?kbid=239104
Access 2000/2002: http://support.microsoft.com/default.aspx?kbid=239482
Access 2003: http://support.microsoft.com/default.aspx?kbid=294698
Bitte beachten Sie, dass der SandBox-Modus fuer Access 97
erst nach der Installation des Service Release 1 fuer Office
97 und Service Pack 3 fuer die Jet-Engine 3.x verfuegbar
ist.
Bevor Sie den Sandbox-Modus der Jet-Engine aktivieren
sollten Sie pruefen, ob Sie in Ihren Datenbanken unsichere
Ausdruecke mit Funktionen, Objekten oder Methoden einsetzen,
wie sie in den oben genannten Knowledge Base-Beitraegen
aufgefuehrt sind. Schlimmstenfalls laufen Ihre Datenbanken
nach der Aktivierung gar nicht mehr, liefern falsche
Ergebnisse oder sind wegen fortwaehrend angezeigter
Fehlermeldungen nicht mehr zu bedienen. Sie muessen auch
damit rechnen, dass einige der Access-Assistenten nicht mehr
funktionieren, da sie teilweise von "unsicheren Ausdruecken"
Gebrauch machen.
Ausserdem muessen Sie beachten, dass Access bei aktiviertem
Sandbox-Modus meistens keine vernuenftige Fehlerbehandlung
ermoeglicht. Es wird naemlich nicht etwa eine eindeutige
Fehlermeldung der Form "Unsicherer Ausdruck '<Ausdruck>'
wurde blockiert!" angezeigt, vielmehr verwirrt Access den
Anwender/Entwickler mit nichts sagenden Meldungen der Form
"JET_errExprUnknownFunction", "Die angeforderte Funktion ist
nicht installiert oder wurde deaktiviert", "Unknown function
name", "Die vorherige Operation wurde abgebrochen" und so
weiter...
Schliesslich ist noch im Auge zu behalten, dass der Sandbox-
Modus nicht nur Access beeinflussen kann: Da der Sandbox-
Modus auf Ebene der Jet Engine implementiert ist, koennen
auch Anwendungen betroffen sein, die per Office Automation
beziehungsweise DAO auf Datenbanken zugreifen. Es ist also
unter Umstaenden damit zu rechnen, dass zum Beispiel eine in
Word-, Excel- oder Visual Basic erstellte Anwendung mit
Office Automation- oder DAO-Zugriff nach Aktivierung des
Sandbox-Modus Probleme bereitet.
Soviel zunaechst zu den Grundlagen des "Sandbox"-Modus.
Welche Voraussetzungen zu erfuellen sind und wie dieser
Modus eingeschaltet und genutzt wird, ist Inhalt des zweiten
Teils dieses Tipps in der naechsten Woche.
Geheimnis gelueftet: 'Sandbox'-Modus optimal nutzen, Teil 2
------------------------------------
Versionen: Access 97, 2000, 2002/XP und 2003
Voraussetzung fuer die Nutzung des Sandbox-Modus ist, wie in
der letzten Woche erwaehnt, das Service Pack 3 fuer die Jet
Engine 3 (Access 97) beziehungsweise das Service Pack 8 fuer
die Jet Engine 4 (Access 2000, 2002, 2003). Um
festzustellen, welches Service Pack auf Ihrem System
installiert ist, gehen Sie wie folgt vor:
1. Starten Sie den Windows-Explorer und oeffnen Sie das
Verzeichnis \WINDOWS\SYSTEM (Windows 9x) beziehungsweise
\WINNT\SYSTEM32 (Windows NT, 2000, XP).
2. Lokalisieren Sie die Datei MSJET3x.DLL (Access 97) bzw.
MSJET40.DLL (Access 2000, 2002, 2003).
3. Klicken Sie mit der rechten Maustaste auf die Datei und
waehlen Sie EIGENSCHAFTEN im Kontextmenue an.
4. Im daraufhin angezeigten Dialog pruefen Sie die Version
der DLL. Die ersten beiden Zifferngruppen wie
beispielsweise "4.00" oder "3.51" definieren die Version
der Jet Engine. Die dann folgende, vierstellige
Zifferngruppe gibt Auskunft ueber das Service Pack. Eine
Zahl im 3000er-Bereich steht zum Beispiel fuer ein
Service Pack 3, eine Zahl im 8000er-Bereich fuer ein
Service Pack 8.
Sollten Sie also bei MSJET3x.DLL (Access 97) beziehungsweise
MSJET40.DLL (Access 2000, 2002, 2003) Werte vorfinden, die
nicht im 3000er- beziehungsweise 8000er-Bereich liegen,
muessen Sie die jeweils aktuellste Version unter den
folgenden Adressen herunterladen:
Access 97, Jet Engine 3.xx: http://support.microsoft.com/default.aspx?kbid=172733
Access 200, 2002, 2003, Jet Engine 4: http://support.microsoft.com/default.aspx?kbid=239114
Bitte beachten Sie, dass das Service Pack fuer die Jet
Engine 4 in unterschiedlichen Versionen verfuegbar ist, die
speziell auf einzelne Betriebssysteme abgestimmt sind. Das
Service Pack 3 fuer die Jet Engine 3 steht nur in einer
Version zur Verfuegung, die unter allen Betriebssystemen
eingesetzt werden kann.
Wenn Sie in Ihren Datenbanken, Office-Loesungen oder Visual
Basic/C-Anwendungen unsichere Ausdruecke verwenden, die bei
aktiviertem Sandbox-Modus blockiert werden wuerden, koennen
Sie die Blockade vermeiden, indem Sie die Funktionalitaet in
benutzerdefinierte VBA-Funktionen auslagern. Access geht
davon aus, dass der Aufruf einer eigenen Funktion als Sicher
einzustufen ist, da ein solcher Vorgang nicht von Aussen
gesteuert werden kann.
Der Sandbox-Modus wird ueber einen Registry-Eintrag
"SandboxMode" aktiviert und gesteuert. Dieser Eintrag ist
vom Datentyp "DWORD" und kann die folgenden Werte enthalten:
+ 0 - Sandbox-Modus ist deaktiviert. Hat die gleiche
Wirkung, als wenn der Eintrag nicht vorhanden ist. Keine
Sicherheit fuer Access und System!
+ 1 - Sandbox-Modus ist fuer den Zugriff von Access aus
aktiviert. Bei anderen, ueber OA/DAO zugreifenden
Anwendungen, erfolgt keine Blockierung. Maximale
Sicherheit fuer die Arbeit mit Access, mittlere Sicherheit
fuer das System.
+ 2 - Sandbox-Modus ist fuer den Zugriff von Access aus
deaktiviert. Bei anderen, ueber OA/DAO zugreifenden
Anwendungen, erfolgt jedoch eine Blockierung. Keine
Sicherheit fuer Access, maximale Sicherheit fuer das
System.
+ 3 - Sandbox-Modus ist fuer jede Art von Zugriffen
aktiviert. Es werden also unsichere Ausdruecke sowohl fuer
Access als auch fuer andere, per OA/DAO zugreifende
Anwendungen blockiert. Empfohlene Einstellung fuer
maximale Sicherheit.
Der Eintrag "SandboxMode" ist je nach Access-Version in den
folgenden Abschnitten anzulegen:
Access 97: HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\3.5\Engines\SandboxMode
Access 2000, 2002, 2003: HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engines\SandboxMode
Standardmaessig ist dieser Eintrag nicht vorhanden oder es
ist dafuer der Wert "2" oder "3" eingetragen, wenn die
Aktivierung beispielsweise aus Access 2003 erfolgte. Um den
Eintrag fuer andere Access-Versionen anzulegen bzw. den Wert
fuer alle Access-Versionen zu aendern, gehen Sie wie folgt
vor:
1. Waehlen Sie das Menue START-AUSFUEHREN an, geben Sie
"regedit" ein und druecken Sie die Return-Taste oder
klicken Sie auf OK.
2. Lokalisieren Sie je nach Access-Version den oben
genannten Abschnitt.
3. Sollte der Eintrag "SandboxMode" noch nicht vorhanden
sein, klicken Sie zunaechst mit der rechten Maustaste auf
den Ordner "Engines", waehlen Sie NEU-DWORD-WERT im
Kontextmenue an und benennen Sie den neuen Eintrag
"SandboxMode".
4. Um den Wert zu aendern, oeffnen Sie den Eintrag
"SandboxMode" per Doppelklick, geben den gewuenschten
Wert im Bereich "0" bis "3" ein und druecken dann die
Return-Taste oder klicken auf OK.
Je nach zugeordnetem Wert ist Ihr Access und/oder das System
nun gegen die Ausfuehrung unsicherer Ausdruecke geschuetzt.
Bitte beachten Sie, dass die Einstellungen fuer den Sandbox-
Modus nur beim Start von Access ausgewertet werden! Nach
Aenderungen muessen Sie Access gegebenenfalls einmal beenden
und neu starten!
Soviel zu dem in allen Access-Versionen nutzbaren "Sandbox"-
Modus. Ab Access 2003 kommt zu diesem Sicherheitsmechanismus
noch die Makrosicherheit hinzu. Details dazu verraet der
dritte Teil und letzte Teil dieses Tipps in der naechsten
Ausgabe.
Geheimnis gelueftet: 'Sandbox'-Modus optimal nutzen, Teil 3
------------------------------------
Versionen: Access 2003
Access 2003 praesentiert Ihnen beim Oeffnen einer Datenbank
gegebenenfalls zusaetzlich zur Sicherheitswarnung zum
Sandbox-Modus eine weitere Warnung inklusive
Sicherheitsabfrage. Sie werden dabei auf eventuell in der
Datenbank vorhandenen Code hingewiesen, der - ueber das
"AutoExec"-Makro oder ein per EXTRAS-START spezifiziertes
Start-Formular automatisch und unbemerkt ausgefuehrt - Daten
und System erheblichen Schaden zufuegen kann. Sie kennen
diese Abfrage unter der Bezeichnung "Makrovirusschutz" seit
Office 97 aus anderen Office-Anwendungen. Und genau wie
dort, koennen Sie ueber das Menue EXTRAS-MAKRO-SICHERHEIT
(oder die Registry, siehe unten) eine Sicherheitsstufe
einstellen und damit steuern, ob eine Sicherheitsabfrage
erfolgen soll oder nicht:
* Stufe "Niedrig": Es werden keine Sicherheitsabfragen zu
Code oder Makros mehr angezeigt. Es erfolgt keine
Ueberpruefung der Einstellungen fuer den Sandbox-Modus.
* Stufe "Mittel": Bei unsignierten Datenbanken wird eine
Sicherheitsabfrage angezeigt, ob die Datenbank geoeffnet
werden soll oder nicht. Access prueft weiterhin, ob
"SandboxMode" auf "1" oder "3" eingestellt ist - wenn
nicht, sind ein oder zwei weitere Sicherheitsabfragen zum
Sandbox-Modus zu beantworten.
* Stufe "Hoch": Unsignierte Datenbanken werden ohne weitere
Hinweise nicht mehr geoeffnet. Bei signierten Datenbanken
prueft Access, ob "SandboxMode" auf "1" oder "3"
eingestellt ist - wenn nicht, sind ein oder zwei weitere
Sicherheitsabfragen zum Sandbox-Modus zu beantworten.
Das fuehrt nun dazu, dass der Start von Access
gegebenenfalls in eine reine Klickorgie ausartet: Bevor Sie
endlich mit der Datenbank arbeiten koennen, sind zunaechst
diverse Sicherheitsabfragen zu beantworten - und wenn Sie
die falsch beantworten, oeffnet sich die Datenbank mitunter
ueberhaupt nicht. Vor allem wenn mit mehreren, regelmaessig
zu wechselnden Datenbanken gearbeitet werden muss, ist dabei
schnell die Grenze des Ertraeglichen erreicht.
Um es gleich vorwegzunehmen: "Viel Schutz ohne Klicks" gibt
es nicht. Ab Sicherheitsstufe "Mittel" in der
Makrosicherheit wird auch immer der Sandbox-Modus geprueft
und gegebenenfalls dessen Aktivierung angemahnt. Eine
Deaktivierung des Sandbox-Modus oder die Einstellung
"SandboxMode = 2" ist somit nur in der Sicherheitsstufe
"Niedrig" moeglich - und die sollten Sie moeglichst nicht
waehlen, weil sonst, wie oben erwaehnt, boesartige Routinen
ueber das "AutoExec"-Makro oder ein per EXTRAS-START
spezifiziertes Start-Formular automatisch und unbemerkt
ausgefuehrt werden koennten. Es bleibt Ihnen nichts weiter
uebrig, als die Sicherheitsstufe "Mittel" zu waehlen und den
Sandbox-Modus auf "1" oder "3" einzustellen, um von
Klickorgien beim Start von Access 2003 beziehungsweise beim
Oeffnen einer Datenbank verschont zu bleiben - es waere dann
nur noch das Oeffnen von Datenbanken zu bestaetigen, die
Makros oder VBA-Routinen enthalten.
Sicherlich bliebe als Alternative noch die Signierung Ihrer
Datenbanken und die Einstellung der Sicherheitsstufe auf
"Hoch". Allerdings muss dann auch der Sandbox-Modus auf "1"
oder "3" eingestellt sein und - weitaus schlimmer - die
Signierung der Datenbank nach jeder noch so kleinen
Aenderung wiederholt werden.
Die Einstellungen fuer die jeweils gewaehlte Stufe in der
Makrosicherheit haelt Access 2003 in der Registry im
folgenden Abschnitt in einem Eintrag "Level" vom Datentyp
"DWORD" fest:
HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\
Access\Security
Der Wert "1" entspricht der Sicherheitsstufe "Niedrig", "2"
entspricht "Mittel" und "3" entspricht "Hoch". Wie in der
letzten Ausgabe bereits erlaeutert, koennen Sie diese
Einstellungen auch "von aussen" per "RegEdit" aendern.