{"id":55001570,"date":"2025-10-01T00:00:00","date_gmt":"2025-08-28T16:33:51","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1570"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Datenbank_durch_RuntimeModus_sicher_machen","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/","title":{"rendered":"Datenbank durch Runtime-Modus sicher machen?"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg01.met.vgwort.de\/na\/e692970887204b249270054a1c5d9462\" width=\"1\" height=\"1\" alt=\"\"><b>Access-Datenbanken, die man als .accdb bereitstellt, k&ouml;nnen dem Benutzer immer noch Elemente er&ouml;ffnen, mit denen dieser auf Bereiche zugreift, die er eigentlich nicht sehen soll. Wir sprechen dabei vor allem vom Navigationsbereich oder von den eingebauten Ribbon-Befehlen, mit denen Elemente in der Entwurfsansicht angezeigt oder sogar bearbeitet werden k&ouml;nnen. Durch die Umwandlung in eine .accde-Datenbank l&auml;sst sich zumindest die Bearbeitung von Formularen, Berichten und VBA-Code verhindern. An die &uuml;brigen Elemente kommt der Benutzer aber dennoch heran. Dieser Beitrag zeigt, wie wir f&uuml;r den Benutzer noch einige M&ouml;glichkeiten dieser Art sperren k&ouml;nnen &#8211; und wie wir die gr&ouml;&szlig;tm&ouml;gliche Sicherheit erreichen.<\/b><\/p>\n<p>Eine Access-Datenbank, die wir als <b>.accdb<\/b>-Datenbank an den Benutzer weitergeben, erlaubt den vollst&auml;ndigen Zugriff auf alle Elemente. Selbst wenn wir den Navigationsbereich zun&auml;chst ausblenden und die Access-Spezialtasten blockieren, kann der Benutzer dies in den meisten F&auml;llen und mit ein wenig Geschick umgehen. Das eingebaute Ribbon k&ouml;nnen wir unsichtbar machen, indem wir eine eigene Ribbondefinition hinzuf&uuml;gen, die wir als Anwendungsribbon festlegen. Aber auch diese Einstellung l&auml;sst sich leicht durch Verwenden der Umschalttaste umgehen.<\/p>\n<p>Wir schauen uns erst einmal an, wie wir diese Einstellungen f&uuml;r den unbedarften Benutzer vornehmen k&ouml;nnen und der Anwendung so einen provisorischen, aber auch leicht zu umgehenden Schutz mitgeben:<\/p>\n<ul>\n<li>Ribbon ausblenden<\/li>\n<li>Navigationsbereich ausblenden<\/li>\n<li>Access-Standardtasten sperren<\/li>\n<\/ul>\n<h2>Ausblenden des eingebauten Ribbons<\/h2>\n<p>Das eingebaute Ribbon blenden wir aus, indem wir der Anwendung eine einfache Ribbondefinition wie die aus Listing 1 hinzuf&uuml;gen. Diese bewirkt folgende &Auml;nderungen:<\/p>\n<pre>&lt;?xml version=\"1.0\"?&gt;\r\n&lt;customUI xmlns=\"http:\/\/schemas.microsoft.com\/office\/2009\/07\/customui\" loadImage=\"loadImage\"&gt;\r\n   &lt;ribbon startFromScratch=\"true\"&gt;\r\n     &lt;tabs&gt;\r\n       &lt;tab id=\"grpMain\" label=\"Main-Gruppe\"&gt;\r\n         &lt;group id=\"grpBeispiel\" label=\"Beispielgruppe\"&gt;\r\n           &lt;button image=\"banana\" label=\"Formular &ouml;ffnen\" id=\"btnFormOeffnen\" onAction=\"onAction\" size=\"large\"\/&gt;\r\n         &lt;\/group&gt;\r\n       &lt;\/tab&gt;\r\n     &lt;\/tabs&gt;\r\n   &lt;\/ribbon&gt;\r\n   &lt;backstage&gt;\r\n     &lt;tab idMso=\"PlaceTabHome\" visible=\"false\"\/&gt;\r\n     &lt;tab idMso=\"TabOfficeStart\" visible=\"false\"\/&gt;\r\n     &lt;tab idMso=\"TabRecent\" visible=\"false\"\/&gt;\r\n     &lt;tab idMso=\"TabInfo\" visible=\"false\"\/&gt;\r\n     &lt;button idMso=\"FileSave\" visible=\"false\"\/&gt;\r\n     &lt;tab idMso=\"TabSave\" visible=\"false\"\/&gt;\r\n     &lt;tab idMso=\"TabPrint\" visible=\"false\"\/&gt;\r\n     &lt;button idMso=\"FileCloseDatabase\" visible=\"false\"\/&gt;\r\n     &lt;tab idMso=\"TabHelp\" visible=\"false\"\/&gt;\r\n     &lt;button idMso=\"ApplicationOptionsDialog\" visible=\"false\"\/&gt;\r\n  &lt;\/backstage&gt;\r\n&lt;\/customUI&gt;<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Ribbon-Anpassung, um alle eingebauten Elemente auszublenden<\/span><\/b><\/p>\n<ul>\n<li>Mit <b>startFromScratch=&#8220;true&#8220; <\/b>im Element <b>ribbon <\/b>sorgen wir daf&uuml;r, dass die eingebauten Elemente im Ribbon ausgeblendet werden.<\/li>\n<li>Durch das Einstellen von <b>visible <\/b>auf <b>false <\/b>in den Elementen unterhalb von <b>backstage <\/b>blenden wir die <b>Datei<\/b>-Befehle aus.<\/li>\n<li>Wir blenden lediglich die benutzerdefinierten Befehle ein, die wir tats&auml;chlich bereitstellen wollen.<\/li>\n<\/ul>\n<p>Damit die Ribbondefinition direkt beim Start angewendet wird, m&uuml;ssen wir den Namen nach dem Anlegen in den Access-Optionen f&uuml;r die Eigenschaft <b>Name des Men&uuml;bands <\/b>hinterlegen (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_05\/pic_1570_001.png\" alt=\"Ribbondefinition festlegen, die beim Start angewendet wird\" width=\"549,559\" height=\"264,4936\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Ribbondefinition festlegen, die beim Start angewendet wird<\/span><\/b><\/p>\n<p>Daneben ben&ouml;tigen wir noch ein wenig Code f&uuml;r die Funktionalit&auml;t der Ribbonanpassung, den Sie in den beiden Modulen <b>mdlRibbon <\/b>und <b>mdlRibbonImages <\/b>finden. Au&szlig;erdem m&uuml;ssen wir das anzuzeigende Bild <b>banana.png <\/b>noch zur Tabelle <b>MSysResources <\/b>hinzuf&uuml;gen.<\/p>\n<p>Wenn wir die Anwendung nun schlie&szlig;en und erneut &ouml;ffnen, sieht das Ribbon der Anwendung bereits wie in Bild 2 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_05\/pic_1570_002.png\" alt=\"Das Ribbon mit ausgeblendeten Standardelementen\" width=\"424,5589\" height=\"158,549\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Das Ribbon mit ausgeblendeten Standardelementen<\/span><\/b><\/p>\n<p>Hier hat der Benutzer nun keine Gelegenheit mehr, die Objekte zu manipulieren.<\/p>\n<p>Wenn wir auf <b>Datei <\/b>klicken, finden wir dort ebenfalls keine Eintr&auml;ge mehr vor (siehe Bild 3). Daf&uuml;r haben wir mit dem Bereich <b>backstage <\/b>in der Ribbondefinition gesorgt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_05\/pic_1570_003.png\" alt=\"Auch das Datei-Men&uuml; ist nun v&ouml;llig leer.\" width=\"424,5589\" height=\"242,2163\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Auch das Datei-Men&uuml; ist nun v&ouml;llig leer.<\/span><\/b><\/p>\n<p>Auch hier kann der Benutzer nun keinerlei &Auml;nderungen mehr vornehmen.<\/p>\n<h2>Navigationsbereich ausblenden und Spezialtasten deaktivieren<\/h2>\n<p>Nun nehmen wir zwei weitere &Auml;nderungen vor, die dem Benutzer den Zugriff auf den Navigationsbereich verwehren sollen.<\/p>\n<p>Um den Navigationsbereich beim Starten gar nicht erst einzublenden, deaktivieren wir, wieder in den Access-Optionen, die Eigenschaft <b>Navigationsbereich anzeigen<\/b>.<\/p>\n<p>Da der Benutzer diesen Bereich nun problemlos mit der Taste <b>F11 <\/b>wieder einblenden k&ouml;nnte, verhindern wir auch dies. Dazu deaktivieren wir die Option <b>Access-Spezialtasten verwenden<\/b> (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_05\/pic_1570_004.png\" alt=\"Deaktivieren weiterer Eigenschaften\" width=\"599,559\" height=\"627,402\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Deaktivieren weiterer Eigenschaften<\/span><\/b><\/p>\n<p>Nach einem erneuten Start bleibt der Navigationsbereich nun ausgeblendet und der Benutzer kann diesen auch gar nicht erst wieder einblenden.<\/p>\n<h2>Bisherige &Auml;nderungen mit der Umschalt-Taste umgehen<\/h2>\n<p>Wenn der Benutzer sich etwas auskennt, wird er jedoch direkt probieren, die Datenbank erneut bei gedr&uuml;ckter <b>Umschalt<\/b>-Taste zu &ouml;ffnen. Und er wird damit Erfolg haben: Alle Elemente sind wieder sichtbar, und auch die Einstellung zum Sperren der Access-Spezialtasten kann er so umgehen.<\/p>\n<h2>Verwendung der Umschalttaste beim Start verhindern<\/h2>\n<p>Um dies zu verhindern, reichen die Access-Optionen nicht mehr aus. Hier m&uuml;ssen wir per VBA eine bestimmte Eigenschaft setzen. Diese hei&szlig;t <b>AllowBypassKey <\/b>und muss zun&auml;chst zur Anwendung hinzugef&uuml;gt werden. Wir implementieren die folgenden Funktionen direkt in einer eigenen Datenbankdatei, hier namens <b>EnableDisableBypassKey.accdb<\/b>.<\/p>\n<p>Wenn <b>AllowBypassKey <\/b>den Wert <b>True <\/b>aufweist, kann man die Anwendung bei gedr&uuml;ckter Umschalttaste &ouml;ffnen und hebelt so die Startoptionen aus. Wenn sie auf <b>False <\/b>eingestellt ist, hat die <b>Umschalt<\/b>-Taste keine Wirkung.<\/p>\n<p>Mit der Funktion aus Listing 2 k&ouml;nnen wir diese Einstellung einfach vornehmen. Wir &uuml;bergeben dieser den Pfad der Access-Datenbank, f&uuml;r die wir die Einstellung anpassen wollen, sowie den Wert, den wir einstellen wollen.<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>SetAllowBypassKey(strPath<span style=\"color:blue;\"> As String<\/span>, bolEnable<span style=\"color:blue;\"> As Boolean<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>prp<span style=\"color:blue;\"> As <\/span>DAO.Property\r\n     <span style=\"color:blue;\">Dim <\/span>strOption<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>lngError<span style=\"color:blue;\"> As Long<\/span>\r\n     \r\n     strOption = \"AllowBypassKey\"\r\n     <span style=\"color:blue;\">Set<\/span> db = OpenDatabase(strPath)\r\n     \r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> prp = db.CreateProperty(strOption, dbBoolean, bolEnable)\r\n     db.Properties.Append prp\r\n     lngError = Err.Number\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n     \r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> Err.Number = 0<span style=\"color:blue;\"> Then<\/span>\r\n         db.Properties(strOption) = bolEnable\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Funktion zum Setzen der Eigenschaft AllowBypassKey<\/span><\/b><\/p>\n<p>Die Funktion &ouml;ffnet die angegebene Datenbank mit der <b>OpenDatabase<\/b>-Methode und versucht, die Eigenschaft zu erstellen und mit dem Wert aus <b>bolEnable <\/b>zu f&uuml;llen. Wenn die Eigenschaft bereits vorhanden ist, f&uuml;hrt dies zu einem Fehler. In diesem Fall stellen wie die Eigenschaft <b>AllowBypassKey<\/b> einfach nur auf den Wert aus <b>bolEnable <\/b>ein.<\/p>\n<p>Zum Aktivieren der Umschalttaste k&ouml;nnen wir diese Prozedur nutzen:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>EnableBypassKey()\r\n     <span style=\"color:blue;\">Dim <\/span>strPath<span style=\"color:blue;\"> As String<\/span>\r\n     strPath = CurrentProject.Path _\r\n         & \"\\DatenbankSichernImRuntimeModus.accdb\"\r\n     SetAllowBypassKey strPath, <span style=\"color:blue;\">True<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Wir gehen hier davon aus, dass sich die zu bearbeitende Datenbank im gleichen Verzeichnis befindet wie unsere Datenbank zum Manipulieren von <b>AllowBypassKey<\/b>. Um sie zu deaktivieren, nutzen wir diese Prozedur:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>DisableBypassKey()\r\n     <span style=\"color:blue;\">Dim <\/span>strPath<span style=\"color:blue;\"> As String<\/span>\r\n     strPath = CurrentProject.Path _\r\n         & \"\\DatenbankSichernImRuntimeModus.accdb\"\r\n     SetAllowBypassKey strPath, <span style=\"color:blue;\">False<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Mit der zuletzt beschriebenen Prozedur deaktivieren wir also die Umschalttaste, was dazu f&uuml;hrt, dass die folgenden zuvor eingestellten Optionen nicht umgangen werden k&ouml;nnen:<\/p>\n<ul>\n<li>Der Navigationsbereich kann nicht mehr eingeblendet werden.<\/li>\n<li>Das Ribbon wird wie gew&uuml;nscht angepasst und somit die eingebauten Elemente ausgeblendet.<\/li>\n<li>Die Spezialtasten von Access k&ouml;nnen nicht mehr verwendet werden &#8211; zum Beispiel, um mit <b>F11 <\/b>den Navigationsbereich einzublenden oder mit <b>Strg + G <\/b>zum VBA-Editor zu wechseln.<\/li>\n<\/ul>\n<p>Der Haken bei dieser Vorgehensweise ist: Wer sich Zugang zu den Inhalten der Datenbankanwendung verschaffen will, kennt diese Technik, um von au&szlig;en den Wert der Eigenschaft <b>AllowBypassKey <\/b>zu &auml;ndern, sodass er die Anwendung der gesperrten Optionen doch wieder aktivieren kann.<\/p>\n<p>Fr&uuml;her konnte man dies noch umgehen, indem man das Sicherheitssystem von Access genutzt hat, um das &Auml;ndern der Eigenschaft <b>AllowBypassKey <\/b>nur f&uuml;r bestimmte Benutzer zu erlauben. Das Sicherheitssystem ist aber erstens schon lange Geschichte, und zweitens war es auch niemals wirklich sicher &#8211; mit ein wenig Geschick konnte man auch dieses aushebeln.<\/p>\n<h2>&Ouml;ffnen der Anwendung im Runtime-Modus<\/h2>\n<p>Welche Karten haben wir noch in der Hand? Wir k&ouml;nnen die Dateiendung der Access-Datenbank in <b>.accdr <\/b>&auml;ndern. Dadurch wird diese so ge&ouml;ffnet, wie es sonst durch die Runtime-Version von Access geschieht. Es werden keine Elemente wie die eingebauten Ribbonbefehle oder der Navigationsbereich mehr angezeigt. Es erscheinen nur Elemente, die wir explizit daf&uuml;r vorgesehen haben &#8211; in diesem Fall unser benutzerdefiniertes Ribbon (siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_05\/pic_1570_005.png\" alt=\"&Ouml;ffnen der Anwendung als simulierte Runtime\" width=\"499,5589\" height=\"194,3809\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: &Ouml;ffnen der Anwendung als simulierte Runtime<\/span><\/b><\/p>\n<p>In diesem Modus erscheinen allerdings Fehlermeldungen, wenn wir auf <b>Datei <\/b>klicken (siehe Bild 6).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_05\/pic_1570_006.png\" alt=\"Fehler beim Anzeigen des Datei-Men&uuml;s\" width=\"599,559\" height=\"181,0187\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Fehler beim Anzeigen des Datei-Men&uuml;s<\/span><\/b><\/p>\n<p>Der Hintergrund dieses Fehlers ist, dass die Elemente, die wir im Bereich <b>backstage <\/b>unserer Ribbondefinition ausgeblendet haben, im Runtime-Modus gar nicht vorhanden sind. Wenn wir die Anwendung also als <b>.accdr<\/b>-Datei weitergeben m&uuml;ssen, sollten wir diesen Bereich wie folgt reduzieren:<\/p>\n<pre>&lt;backstage&gt;\r\n    &lt;tab idMso =\"TabInfo\" visible=\"false\"\/&gt;\r\n    &lt;tab idMso =\"TabPrint\" visible=\"false\"\/&gt;\r\n    &lt;button idMso=\"ApplicationOptionsDialog\"      visible=\"false\"\/&gt;\r\n&lt;\/backstage&gt;<\/pre>\n<p>Damit tauchen nun keine weiteren Fehler auf. Diese Elemente zum Ausblenden der Bereiche und Befehle sind jedoch gegebenenfalls noch anzupassen, da sich ihre Namen je nach Access-Version unterscheiden k&ouml;nnen.<\/p>\n<h2>Auch .accdr l&auml;sst sich umgehen<\/h2>\n<p>Haben wir nun die perfekte L&ouml;sung gefunden? Leider nein, denn da der Benutzer die Datenbank &ouml;ffnen und in ihr auch Schreiboperationen durchf&uuml;hren k&ouml;nnen muss, kann er auch ihren Dateinamen &auml;ndern &#8211; und so <b>.accdr <\/b>wieder in <b>.accdb <\/b>&auml;ndern.<\/p>\n<p>Aber auch daf&uuml;r haben wir eine L&ouml;sung. Da wir dem Benutzer ohnehin auch den Zugriff auf den Quellcode der Anwendung und auf den Entwurf von Datenbankobjekten verwehren wollen, wandeln wir diese noch in eine <b>.accde <\/b>um.<\/p>\n<p>Und f&uuml;gen der Anwendung VBA-Code hinzu, der automatisch beim &Ouml;ffnen der Anwendung ausgef&uuml;hrt wird und der pr&uuml;ft, ob die Dateiendung auf <b>.accdr <\/b>lautet. Ist das nicht der Fall, zeigen wir eine Meldung an und schlie&szlig;en die Anwendung wieder.<\/p>\n<p>Diese Funktion f&uuml;gen wir vor dem Umwandeln in eine <b>.accde<\/b>-Datenbank hinzu. Dazu nutzen wir das <b>Autoexec<\/b>-Makro und rufen damit eine VBA-Funktion namens <b>CheckRuntime <\/b>auf. Das <b>AutoExec<\/b>-Makro statten wir mit dem Befehl <b>Ausf&uuml;hrenCode <\/b>aus und geben den Namen der aufzurufenden Funktion an. Au&szlig;erdem pr&uuml;fen wir hier anschlie&szlig;end, ob die tempor&auml;re Variable <b>CheckRuntime <\/b>danach nicht den Wert <b>0 <\/b>(<b>False<\/b>) enth&auml;lt. In diesem Fall war <b>CheckRuntime <\/b>nicht erfolgreich und wir schlie&szlig;en die Datenbank direkt wieder mit dem Befehl <b>Beenden<\/b> (siehe Bild 7).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_05\/pic_1570_007.png\" alt=\"AutoExec-Makro, das eine Funktion zum Pr&uuml;fen der Dateiendung aufruft\" width=\"499,5589\" height=\"309,1488\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: AutoExec-Makro, das eine Funktion zum Pr&uuml;fen der Dateiendung aufruft<\/span><\/b><\/p>\n<p>Die Funktion <b>CheckRuntime <\/b>pr&uuml;ft, ob der Dateiname mit <b>.accdr <\/b>endet. Nur in diesem Fall wird als Ergebnis <b>True <\/b>zur&uuml;ckgegeben. Anderenfalls erscheint eine Meldung, die auf die falsche Dateiendung hinweist und die Datenbank wird wieder geschlossen:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>CheckRuntime()\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Right<\/span>(CurrentDb.Name, 6) = \".accdr\"<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Die Dateiendung muss .accdr lauten, \" _\r\n            \"damit die Anwendung ge&ouml;ffnet werden kann.\", _\r\n            <span style=\"color:blue;\">vbCr<\/span>itical + vbOKOnly, _\r\n            \"Ung&uuml;ltiger &Ouml;ffnungsversuch\"\r\n         TempVars.Add \"CheckRuntime\", <span style=\"color:blue;\">False<\/span>\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         TempVars.Add \"CheckRuntime\", <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Den aktuellen Stand finden Sie im Download unter dem Namen <b>DatenbankSichernImRuntimeModus_Runtime_accde_Vorbereitung.accdb<\/b>. Nun m&uuml;ssen wir die Datenbank nur noch in eine <b>.accde<\/b>-Datenbank umwandeln und anschlie&szlig;end wieder <b>.accdr <\/b>als Dateiendung festlegen. Dann wird die Datenbank korrekt ge&ouml;ffnet, so wie wir es uns vorstellen.<\/p>\n<p>Die gesch&uuml;tzte Datei tr&auml;gt im Download den Namen <b>DatenbankSichernImRuntimeModus_Runtime_accde.accdr<\/b>.<\/p>\n<p>Allerdings gibt es auch bei dieser Methode eine M&ouml;glichkeit, den Sicherheitsmechanismus zu umgehen. Wenn Sie ihn finden, schreiben Sie uns den Weg in einer E-Mail an <b>info@access-im-unternehmen.de<\/b>.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>DatenbankSichernImRuntimeModus.accdb<\/p>\n<p>DatenbankSichernImRuntimeModus_Runtime.accdr<\/p>\n<p>DatenbankSichernImRuntimeModus_Runtime_accde.accdr<\/p>\n<p>DatenbankSichernImRuntimeModus_Runtime_accde_Vorbereitung.accdb<\/p>\n<p>EnableDisableBypassKey.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/33272BF4-1F5D-4B87-AB4E-AB54F3781218\/aiu_1570.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Access-Datenbanken, die man als .accdb bereitstellt, k&ouml;nnen dem Benutzer immer noch Elemente er&ouml;ffnen, mit denen dieser auf Bereiche zugreift, die er eigentlich nicht sehen soll. Wir sprechen dabei vor allem vom Navigationsbereich oder von den eingebauten Ribbon-Befehlen, mit denen Elemente in der Entwurfsansicht angezeigt oder sogar bearbeitet werden k&ouml;nnen. Durch die Umwandlung in eine .accde-Datenbank l&auml;sst sich zumindest die Bearbeitung von Formularen, Berichten und VBA-Code verhindern. An die &uuml;brigen Elemente kommt der Benutzer aber dennoch heran. Dieser Beitrag zeigt, wie wir f&uuml;r den Benutzer noch einige M&ouml;glichkeiten dieser Art sperren k&ouml;nnen &#8211; und wie wir die gr&ouml;&szlig;tm&ouml;gliche Sicherheit erreichen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662025,66052025,44000038],"tags":[],"class_list":["post-55001570","post","type-post","status-publish","format-standard","hentry","category-662025","category-66052025","category-Sicherheit"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Datenbank durch Runtime-Modus sicher machen? - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Datenbank durch Runtime-Modus sicher machen?\" \/>\n<meta property=\"og:description\" content=\"Access-Datenbanken, die man als .accdb bereitstellt, k&ouml;nnen dem Benutzer immer noch Elemente er&ouml;ffnen, mit denen dieser auf Bereiche zugreift, die er eigentlich nicht sehen soll. Wir sprechen dabei vor allem vom Navigationsbereich oder von den eingebauten Ribbon-Befehlen, mit denen Elemente in der Entwurfsansicht angezeigt oder sogar bearbeitet werden k&ouml;nnen. Durch die Umwandlung in eine .accde-Datenbank l&auml;sst sich zumindest die Bearbeitung von Formularen, Berichten und VBA-Code verhindern. An die &uuml;brigen Elemente kommt der Benutzer aber dennoch heran. Dieser Beitrag zeigt, wie wir f&uuml;r den Benutzer noch einige M&ouml;glichkeiten dieser Art sperren k&ouml;nnen - und wie wir die gr&ouml;&szlig;tm&ouml;gliche Sicherheit erreichen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-28T16:33:51+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg01.met.vgwort.de\/na\/e692970887204b249270054a1c5d9462\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"10\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbank_durch_RuntimeModus_sicher_machen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbank_durch_RuntimeModus_sicher_machen\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Datenbank durch Runtime-Modus sicher machen?\",\"datePublished\":\"2025-08-28T16:33:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbank_durch_RuntimeModus_sicher_machen\\\/\"},\"wordCount\":1651,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbank_durch_RuntimeModus_sicher_machen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/e692970887204b249270054a1c5d9462\",\"articleSection\":[\"2025\",\"5\\\/2025\",\"Sicherheit\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbank_durch_RuntimeModus_sicher_machen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbank_durch_RuntimeModus_sicher_machen\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbank_durch_RuntimeModus_sicher_machen\\\/\",\"name\":\"Datenbank durch Runtime-Modus sicher machen? - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbank_durch_RuntimeModus_sicher_machen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbank_durch_RuntimeModus_sicher_machen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/e692970887204b249270054a1c5d9462\",\"datePublished\":\"2025-08-28T16:33:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbank_durch_RuntimeModus_sicher_machen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbank_durch_RuntimeModus_sicher_machen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbank_durch_RuntimeModus_sicher_machen\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/e692970887204b249270054a1c5d9462\",\"contentUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/e692970887204b249270054a1c5d9462\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenbank_durch_RuntimeModus_sicher_machen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Datenbank durch Runtime-Modus sicher machen?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Datenbank durch Runtime-Modus sicher machen? - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/","og_locale":"de_DE","og_type":"article","og_title":"Datenbank durch Runtime-Modus sicher machen?","og_description":"Access-Datenbanken, die man als .accdb bereitstellt, k&ouml;nnen dem Benutzer immer noch Elemente er&ouml;ffnen, mit denen dieser auf Bereiche zugreift, die er eigentlich nicht sehen soll. Wir sprechen dabei vor allem vom Navigationsbereich oder von den eingebauten Ribbon-Befehlen, mit denen Elemente in der Entwurfsansicht angezeigt oder sogar bearbeitet werden k&ouml;nnen. Durch die Umwandlung in eine .accde-Datenbank l&auml;sst sich zumindest die Bearbeitung von Formularen, Berichten und VBA-Code verhindern. An die &uuml;brigen Elemente kommt der Benutzer aber dennoch heran. Dieser Beitrag zeigt, wie wir f&uuml;r den Benutzer noch einige M&ouml;glichkeiten dieser Art sperren k&ouml;nnen - und wie wir die gr&ouml;&szlig;tm&ouml;gliche Sicherheit erreichen.","og_url":"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/","og_site_name":"Access im Unternehmen","article_published_time":"2025-08-28T16:33:51+00:00","og_image":[{"url":"http:\/\/vg01.met.vgwort.de\/na\/e692970887204b249270054a1c5d9462","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"10\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Datenbank durch Runtime-Modus sicher machen?","datePublished":"2025-08-28T16:33:51+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/"},"wordCount":1651,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/e692970887204b249270054a1c5d9462","articleSection":["2025","5\/2025","Sicherheit"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/","url":"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/","name":"Datenbank durch Runtime-Modus sicher machen? - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/e692970887204b249270054a1c5d9462","datePublished":"2025-08-28T16:33:51+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/#primaryimage","url":"http:\/\/vg01.met.vgwort.de\/na\/e692970887204b249270054a1c5d9462","contentUrl":"http:\/\/vg01.met.vgwort.de\/na\/e692970887204b249270054a1c5d9462"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Datenbank_durch_RuntimeModus_sicher_machen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Datenbank durch Runtime-Modus sicher machen?"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55001570"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001570\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001570"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001570"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}