DebugAllowed
, in auf .NET-Basis-Assemblies basierten Klassen auch mit this.Services.Application.SettingsRuntime.DebugAllowed
abfragbar
Die Tabelle RSET
beschreibt, welche Einstellungen zur Laufzeit vom Anwendungscode benutzt und ggf. verändert werden dürfen. Die Einstellungen werden in der Windows-Registry gespeichert. Sie werden dort über maximal 4 Pfade verteilt in der folgenden Reihenfolge ausgewertet:
Im Allgemeinen sind die benutzerübergreifende Einstellungen nicht im Anwendungscode änderbar, sondern werden zentral verwaltet und liefern somit eine Möglichkeit Vorgaben zu erzwingen.
Das Feld Name
bezeichnet die Laufzeiteinstellung eindeutig. Die Großkleinschreibung ist für die Eindeutigkeit nicht relevant. Sie wird aber beibehalten um bspw. bei der Erzeugung von Code einen Identifier zu bilden.
Das Feld Bezeichnung
umschreibt die Laufzeiteinstellung.
Das Feld Flags
legt bestimmte Eigenschaften der Einstellung fest. Das Feld wird gebildet aus der Kombination folgender einzelner Werte:
Hex | Dezimal | Bezeichnung | Erklärung |
---|---|---|---|
0x00000001 | 1 | Readonly | die Einstellung kann nicht verändert, sondern nur gelesen werden. |
0x00000002 | 2 | DebugSpecific | die Einstellung soll nur unter Testbedingungen verwendet werden. Wenn die Anwendung in einem nicht-Test Kontext1) ausgeführt wird, soll die Einstellung immer den definierten Vorgabewert aufweisen, und als nichtexistent gelten.. |
0x00000004 | 4 | WithArgument , | die Einstellung ist nicht eindeutig zuzuordnen, sondern bedarf einer zusätzlichen Angabe in Form einer Zeichenfolge. So kann bspw. eine Datenbankeinstellung spezifisch zu einer bestimmten Datenquelle vorgenommen werden. In einem solchen Fall wird dann der Name der Datenquelle als Argument für die Einstellung benötigt. Der «Entry» -Bestandteil des gebildeten Pfades wird in einem solchen Fall mit der Kontext-Zeichenfolge vorangestellt, also als «Kontext»\«Entry» |
0x00000008 | 8 | System | die Einstellung ist keine, die von der Anwendung oder dem Mandanten definiert wurde, sondern ist eine, die im TAA-Abschnitt der Registry bereits vorhanden ist und von der TAA vordefiniert wird. |
0x00040000 | 262144 | Encrypted | die Einstellung wird als verschlüsselter String gespeichert 2) |
Anwendungsspezifische Einstellungen sollten nicht unter TAA abgelegt werden, d.h. der Flag 8 sollte nur gesetzt sein, um auf von der TAA verwaltete Einstellungen zuzugreifen.
Folgende Flags schließen sich gegenseitig aus, aber können den obigen Flags hinzugefügt werden:
Hex | Dezimal | Bezeichnung | Erklärung |
---|---|---|---|
0x00001000 | 4096 | Numeric | die Einstellung ist als eine numerische Angabe zu behandeln. |
0x00002000 | 8192 | Date | die Einstellung ist als eine Datumsangabe ohne Uhrzeit zu behandeln. |
0x00004000 | 16384 | Time | die Einstellung ist als eine Zeitangabe ohne Datum zu behandeln. |
0x00008000 | 32768 | DateTime | die Einstellung ist als eine Datumsangabe mit Uhrzeit zu behandeln. |
0x00010000 | 66536 | Timestamp | die Einstellung ist als ein eindeutiger Zeitstempel zu behandeln. |
0x00020000 | 131072 | Boolean | die Einstellung ist als eine boolesche Angabe zu behandeln. |
Über das Feld Affinity
wird bestimmt, an welcher Stelle in der Registry die Einstellung verwaltet wird, und ggf. auch, welcher Kontext angewandt wird um die Einstellung aufzufinden. Die Angaben schließen sich gegenseitig aus.
Folgende Angaben sind möglich:
Hex | Dezimal | Bezeichnung | Erklärung |
---|---|---|---|
0x00000001 | 1 | Module | die Einstellung ist bausteinspezifisch. Der aktuell aktive Baustein gilt als Kontext für den Zugriff. |
0x00000002 | 2 | Application | die Einstellung ist anwendungsspezifisch. Die Anwendung des aktuell aktiven Bausteins gilt als Kontext für den Zugriff. |
0x00000004 | 4 | Config , | die Einstellung ist eine allgemeine Konfigurationsangabe |
0x00000008 | 8 | Company | die Einstellung ist eine mandantenspezifische Angabe |
0x00000010 | 16 | DbConfig | die Einstellung ist eine datenbankbezogene Angabe |
Falls die Einstellung nicht explizit in der Registry vorgenommen wird, gilt die hier spezifizierte Angabe als Standardwert. Ebenso kann der Eintrag aus der Registry entfernt werden, wenn der Eintrag auf einen Wert gesetzt wird, der dieser Vorgabe entspricht.
Falls keine explizite Angabe im Feld Entry
gemacht wird, ist das Feld Name
gleichzeitig der Wert für Entry
.
Der Pfad in der Registry wird gebildet als «Root»\«Affinity»\[«Kontext»\]«Entry»
. Die einzelnen Bestandteile werden dabei wie folgt gebildet:
Hintereinander werden bis zu vier verschiedene Pfade für die «Root»
-Angabe geformt. Sobald ein Eintrag mit dem jeweiligen Wert für die «Root»
-Angabe gefunden wird, wird nicht weitergesucht. Der Pfad für «Root»
ist demnach eine von:
HKEY_LOCAL_MACHINE\Software\«Mandant»\Env\«EnvSpec»
HKEY_LOCAL_MACHINE\Software\«Mandant»
HKEY_CURRENT_USER\Software\«Mandant»\Env\«EnvSpec»
HKEY_CURRENT_USER\Software\«Mandant»
Der Wert für «Mandant»
ist für Systemeinstellungen TAA
, sonst der Wert der Systemeinstellung im Pfad Company\RuntimeSettingsRoot
; die Standardvorgabe ist ALH
3).
Der Wert für «EnvSpec»
wird aus der Systemeinstellung im Pfad Config\EnvSpec
ermittelt. Wenn dieser Wert nicht vorhanden oder leer ist, werden die beiden umgebungsspezifischen Pfade übersprungen.
Der Pfad-Bestandteil «Affinity»
wird je nach Zuordnung der Laufzeiteinstellung wie folgt gebildet:
Flag Hex | Dezimal | Bedeutung | Pfad |
---|---|---|---|
0x00000001 | 1 | Module , bausteinspezifisch | Appl\«Appl»\«Module» . Dabei wird als «Module» der Name des aktuell aktiven Bausteins, und als «Appl» die Anwendung dieses Bausteins benutzt. Wenn der Flag Test/Debug angegeben ist, wird der Pfad um die Stufe Debug ergänzt, also Appl\«Appl»\Debug\«Module» . |
0x00000002 | 2 | Application , anwendungsspezifisch | Appl\«Appl» . Dabei wird als «Appl» die Anwendung des aktuell aktiven Bausteins benutzt. |
0x00000004 | 4 | Config , allgemeine Konfigurationsangabe | Config |
0x00000008 | 8 | Company , mandantenspezifisch | Company |
0x00000010 | 16 | DbConfig , datenbankbezogen | DbConfig |
Wenn die Laufzeiteinstellung mit dem Flag WithArgument
markiert ist, wird anwendungsseitig noch eine zusätzliche Zeichenfolge bei der Ermittlung der Einstellung übergeben. Diese Zeichenfolge wird dann für den Pfad-Bestandteil «Kontext»
eingesetzt.
Der Pfad-Bestandteil «Entry»
wird gebildet aus dem Feld Entry
der definierten Laufzeiteinstellung oder, falls hier keine Angabe vorgenommen wurde, aus dem Name der Laufzeiteinstellung.
Da der Eintrag in der mdb mit dezimalwerten erfolgt, sind hier Flags und Affinity dezimal dargestellt.
Zugriff auf anwendungsspezifische Einstellungen:
RootPfad: <hkey>\Software\<mandant>[\Env\<envspec]
Name | Affinity | Flags | Entry | ermittelter Pfad | Anmerkung |
---|---|---|---|---|---|
Logfile | 1 | 0 | Appl\<appl>\<module>\Logfile | Moduleinstellung | |
Password | 2 | 262145 | Appl\<appl>\Password | schreibgeschützte, verschlüsselte Anwendungseinstellung | |
UserID | 2 | 0 | Appl\<appl>\UserID | änderbare Anwendungseinstellung | |
LastRun | 2 | 65536 | Appl\<appl>\LastRun | änderbare Anwendungseinstellung Timestamp | |
WebUmgebung | 4 | 1 | WebEnv | Config\WebEnv | schreibgeschützte Config-Einstellung |
BaseDir | 8 | 1 | Company\BaseDir | schreibgeschützte Company-Einstellung | |
DbUser | 16 | 5 | sys\User | DbConfig\<argument>\sys\User | schreibgeschützte DBConfig-Einstellung mit ZusatzAngabe |
Zugriff auf bestehende Einstellungen aus der TAA (mit Flag 8):
RootPfad: <hkey>\Software\TAA[\Env\<envspec]
Name | Affinity | Flags | Entry | ermittelter Pfad | Anmerkung |
---|---|---|---|---|---|
Sperrverzeichnis | 4 | 9 | BcLockDir | Config\BcLockDir> | schreibgeschützte Systemeinstellung |
ApplVersion | 2 | 9 | Version | Appl\<appl>\Version | schreibgeschützte System-Anwendungseinstellung |
ModulImpl | 2 | 11 | Ityp | Appl\<appl>\Debug\<module>Ityp | schreibgeschützte System-Moduleinstellung für Test/Debug |