320 likes | 463 Views
INI-Dateien und Registry. Arbeiten mit der Registry von Windows NT / Windows 95 in Microsoft Visual FoxPro. Diese Schulung dient der Einführung in das Arbeiten mit INI-Dateien sowie der Registry von Windows NT unter Microsoft Visual FoxPro. Themenübersicht. Aufbau von INI-Dateien
E N D
INI-Dateien und Registry Arbeiten mit der Registry von Windows NT / Windows 95 in Microsoft Visual FoxPro
Diese Schulung dient der Einführung in das Arbeiten mit INI-Dateien sowie der Registry von Windows NT unter Microsoft Visual FoxPro
Themenübersicht • Aufbau von INI-Dateien • Verarbeiten von INI-Dateien • Bearbeiten der Registry • Bereiche der Registry • Die Bereiche im Einzelnen • Werttypen in der Registry • Dateien der Registry • Beispiele für Registry-Keys • VFP-Funktionen für Registry • Betriebssystem-Funktionen für Registry
Arbeiten mit INI-Dateien Verwendung von INI-Dateien unter Microsoft Visual FoxPro
Aufbau von INI-Dateien • Werden nur noch ungern verwendet • Können an beliebiger Stelle sein • Enthalten versch. [Bereiche] • Darunter einen Schlüssel mit einer Wertzuweisung
Verarbeiten von INI-Dateien • Deklaration DLL in WIN32API: DECLARE INTEGER GetPrivateProfileString in win32api String,String,String, String @, integer,string DECLARE INTEGER WritePrivateProfileString in win32api String,String,String,String @, integer,string • Aufruf der Funktion: =GetPrivateProfileString( <tcSection>, <tcVar>, "", @<tcBuffer>, len(<tcbuffer>), <tcIniFile>) *-- Rückgabe der gültigen neuen Bufferlänge tcBuffer = left( tcBuffer, lnLen )
Registry Struktur der Registry unter Microsoft Windows NT
Bearbeiten der Registry • REGEDIT.EXE • Übersichtliche Darstellung unter NT • REGEDT32.EXE • Darstellung in getrennten Fenstern • Speichern von Bereichen der Registry • Systemfunktionen • Direktes Lesen/Schreiben von Einträgen
Aufbau und Sinn der Registry • Hierarchische Gliederung von Konfigurationsinformationen • Einheitlicher Zugriff über „Schlüssel“ (Hierarchie) • Definition von „Name“, „Datentyp“ und „Wert“ • Zentrale Speicherung im OS
Bereiche der Registry • HKEY_LOCAL_MACHINE • HKEY_USERS • HKEY_DYN_DATA • HKEY_CLASSES_ROOT • HKEY_CURRENT_USER • HKEY_CURRENT_CONFIG
Verkürzte Einträge • HKEY_CLASSES_ROOT • entspricht HKEY_LOCAL_MACHINE\Software\Classes • HKEY_CURRENT_USER • entspricht HKEY_USERS\ für den aktuellen Anwender • HKEY_CURRENT_CONFIG • entspricht HKEY_LOCAL_MACHINE\Software bzw. \Hardware für aktuelle Konfiguration
Tatsächliche Einträge • HKEY_LOCAL_MACHINE • Komplette Konfiguration für den Arbeitsplatz ohne Benutzerspezifisches • HKEY_USERS • Anwenderspezifische Daten • HKEY_DYN_DATA • Dynamische Daten - kein Bearbeiten oder Lesen möglich!
HKEY_LOCAL_MACHINE (1) • HARDWARE • wird beim Systemstart neu aufgebaut • siehe separate Aufstellung • SAM • Security Account Manager • Zugriff nur über Benutzermanager • SECURITY • ebenfalls kein direkter Zugriff
HKEY_LOCAL_MACHINE (2) • SOFTWARE • Diverse Schlüssel von Microsoft • Schlüssel anderer Hersteller (!) • siehe separate Aufstellung • SYSTEM • Konfiguration Einheitentreiber • Konfiguration Dienste von NT • siehe separate Aufstellung
HKEY_LOCAL_MACHINE\HARDWARE • DESCRIPTION • Beim Start gesammelte Systeminformationen - änderbar aber bei nächstem Start überschrieben... • DEVICEMAP • Verweis auf Registry-Informationen • RESOURCEMAP • Zuordnung Treiber zu IRQ/IO usw.
HKEY_LOCAL_MACHINE\SOFTWARE • CLASSES = HKEY_CLASSES_ROOT • MICROSOFT = Programme/System • PROGRAM GROUPS (alt) • SECURE = Administratoren • WIN 3.1 MIGRATION STATUS • Windows 3.1. Migration Status INI-Files
Hinweis HKEY_CLASSES_ROOT • Erstmal alle System-Endungen • Bei den meisten Einträgen Untereintrag mit Verweis CLSID • CLSID mit Untereintrag mit Verweis auf TYPELIB • TYPLIB enthält Interface-Beschreibung (OLE2-Viewer)
HKEY_LOCAL_MACHINE\SYSTEM • CLONE • Letzte lauffähige Version • CONTROLSETnnn • verschiedene Control-Sets • CURRENTCONTROLSET • aktuelle Konfiguration • SELECT • Current, Default, Failed, LastKnownGood • SETUP
HKEY_LOCAL_MACHINE\SYSTEM\Controlset • CONTROL • Einstellungen für Systemstart • SERVICES • Einheitentreiber und Dienste • Diverse Treiber für nicht vorhandenes... • HARDWARE PROFILES (ggf.) • ENUM (Plug & Play) (ggf.)
Datentypen in der Registry • REG_BINARY Binär/Hexawert • REG_DWORD 32-Bit-Wert Hex • REG_SZ Zeichenkette • REG_EXPAND_SZ Expandiert • z.B. für Verwendung von Platzhaltern • Beispiel: %systemroot% • REG_MULTI_SZ Mehrzeilig
Dateien der Registry • %systemroot%\PROFILES • Defaultuser mit NTUSER.DAT-Vorlage • <User>-Verzeichnis mit NTUSER.DAT • %systemroot%\SYSTEM32\CONFIG • HKEY_LOCAL_MACHINE • Default, SAM, Security, Software, System • *. = Original, *.ALT = Backup, *.LOG = Protokoll, *.SAV = Zusatzinformationen
Beispiele Registry-Schlüssel • Einstellung Sommerzeit: • "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" anwählen • Bei der Position "StandardStart" im dritten Zahlenpaar die 09 durch 0A ersetzen • Einstellung Source-Control: • "HKEY_LOCAL_MACHINE\SOFTWARE\SourceControlProvider\InstalledSCCProvider“ • Einstellungen zu Visual FoxPro
Programmierung Registry Programmierung der Registry mit Microsoft Visual FoxPro
Registry-Funktionen in VFP • =SYS(3056,1) • SET OLEOBJECT ON/OFF • -R-Switch • Registry-Objekt • GetAppPath • GetLatestVersion • GetApplication
Programmierung (1) • WINAPI-Funktionsdeklarationen: DECLARE INTEGER RegOpenKey IN Win32API ; INTEGER hKey, ; && handle of open key STRING @lpszSubKey, ; && address of name of subkey to open INTEGER @phkResult && address of handle of open key DECLARE INTEGER RegCreateKey IN Win32API ; INTEGER hKey, ; && handle of open key STRING @lpszSubKey, ; && address of name of subkey && to create INTEGER @phkResult && address of handle of open key DECLARE INTEGER RegCloseKey IN Win32API ; INTEGER hKey && handle of open key DECLARE INTEGER RegDeleteKey IN Win32API ; INTEGER hKey, ; && handle of open key STRING @lpszSubKey && address of name of &&subkey to delete
Programmierung (2) DECLARE INTEGER RegDeleteValue IN Win32API ; INTEGER nHKey, ; && handle of key STRING cSubKey && address of value name DECLARE INTEGER RegSetValueEx IN Win32API ; INTEGER hKey, ; && handle of key to set value for STRING lpValueName, ; && address of value to set INTEGER Reserved, ; && reserved, set to 0 INTEGER dwType, ; && flag for value type STRING lpData, ; && address of value data INTEGER cbData && size of value data DECLARE INTEGER RegQueryValueEx IN Win32API ; INTEGER hKey, ; && handle of key to query STRING lpszValueName, ; && address of name of value to query INTEGER lpdwReserved, ; && reserved INTEGER @lpdwType, ; && address of buffer for value type STRING @lpbData, ; && address of data buffer INTEGER @lpcbData && address of data buffer size
Beispiel Solution-Samples * Die Library ist im Solution Sample enthalten set library to progs\reg_sol lcProgram= "" lcPfad= "" oReg= create( "FileReg") * GetApplication( cExtnKey,cAppKey, lServer) * GetAppPath( cExtension,cExtnKey,cAppKey,lServer) if oReg.GetAppPath( "DOC",@lcProgram,@lcPfad) # 0 return endif ? lcProgram ? lcPfad
Konstanten für Registry #define HKEY_CLASSES_ROOT -2147483648 #define HKEY_CURRENT_USER -2147483647 #define HKEY_LOCAL_MACHINE -2147483646 #define REG_SZ 1 #define REG_OPTION_RESERVED 0 #define REG_CLASS_DEFAULT "" #define REG_SECURITY_DEFAULT 0 #define REG_OPTION_NON_VOLATILE 0 #define REG_OPTION_VOLATILE 1 #define REG_ALL_ACCESS 63
Welche Fragen stellen sich? • Verwendung der Registry eigentlich zwingend (!) • Anlegen / Lesen von lokalen Registry-Werten • Hierarchie (!)
Vielen Dank! Das waren die Themen: • Aufbau von INI-Dateien • Verarbeiten von INI-Dateien • Bearbeiten der Registry • Bereiche der Registry • Die Bereiche im Einzelnen • Werttypen in der Registry • Dateien der Registry • Beispiele für Registry-Keys • VFP-Funktionen für Registry • Betriebssystem-Funktionen für Registry
Wenn Fragen bestehen: Wizards & Builders Methodische Software-Entwicklung GmbH Frankfurter Str. 21b 61476 Kronberg Tel.: 06173-950906 Fax: 06173-950907 CIS: 101605,175