Die Registry ist unter Windows Betriebsystemen ein wichtiges Element, um Statusinformationen zu speichern und zu laden. Aufgabe Erstellen Sie ein Java-Programm, welches die Registry-Einträge bzgl. der Verknüpfungen verwaltet. Da dies direkt aus Java nicht möglich ist erstellen sie eine Dynamic Link Library (DLL) in C / C++, die Ihnen entsprechende Methoden zur Verfügung stellt, und greifen Sie mit Hilfe des Java Native Interface darauf zu. [...]
Inhaltsverzeichnis
1. AUFGABENSTELLUNG
Registry Abfrage mit Java (JNI)
Grundlage
Aufgabe
Testkriterien
2. LÖSUNG
Allgemeine Lösungsreihenfolge
Das Java-Programm
Erläuterung
Quelltext
Die C++ - Dynamic Link Library
ADVAPI32.DLL
long RegOpenKeyEx()
long RegCLoseKey()
long RegEnumKeyEx()
long RegQueryValueEx()
long RegCreateKeyEx()
long RegSetValueEx()
Erläuterung
void GetAlleErweiterungen()
void neuerKey()
long getErweiterung ()
long* getUserKey ()
Quelltext
Header
CPP-Datei
3. ALLGEMEINE HINWEISE
4. QUELLEN
5. SOFTWARE
Zielsetzung & Themen
Ziel der Arbeit ist die Realisierung eines Java-Programms zur Verwaltung von Registry-Einträgen unter Windows, da Java nativ keinen direkten Zugriff auf diese Betriebssystemkomponente bietet. Die Forschungsfrage fokussiert sich darauf, wie mithilfe des Java Native Interface (JNI) eine Brücke zwischen Java und einer C++-basierten Dynamic Link Library (DLL) geschlagen werden kann, um Registry-Daten zu lesen und zu schreiben.
- Verwaltung von Dateierweiterungen und deren Verknüpfungen
- Entwicklung nativer Methoden zur Kommunikation mit der Windows-Registry
- Implementierung von API-Zugriffen über die ADVAPI32.DLL
- Entwurf einer benutzerfreundlichen Konsolenschnittstelle in Java
Auszug aus dem Buch
Die C++ - Dynamic Link Library
Wie bereits erwähnt erhält man über Methoden und Funktionen, die von der Datei ADVAPI32.DLL zur Verfügung gestellt werden, Zugriff auf die Registrierung, kann diese auslesen und modifizieren. Diese Methoden und Funktionen stellen oft mehr Möglichkeiten zur Verfügung als zur Lösung dieser Aufgabe benötigt werden. Es wurden folgende Funktionen verwendet:
long RegOpenKeyEx()
LONG RegOpenKeyEx(HKEY hKey, LPCTSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult);
Mit dieser Funktion können die Einzelnen Registrierungskeys geöffnet werden. Sie gibt einen long – Wert zurück, welcher 0 ist, wenn das Öffnen erfolgreich war, ansonsten den Fehlercode. Der erste Parameter HKEY hKey übergibt der Methode den bereits geöffneten Key oder einen der Hauptschlüssel der Registrierung, die direkt ohne Hochkommata eingetragen werden könnnen. Der zweite Parameter LPCTSTR lpSubKey übergibt die Adresse des Namens des zu öffnenden Subkeys. Man beachte, dass in diesem Namen, sollte er das Zeichen \ enthalten, dieses Zeichen durch ein \\ dargestellt werden muss. Der Parameter DWORD ulOptions ist von Windows reserviert und muss NULL sein.
Zusammenfassung der Kapitel
1. AUFGABENSTELLUNG: Definition der Anforderungen an ein Java-Programm zur Verwaltung von Dateierweiterungen in der Windows-Registry.
2. LÖSUNG: Detaillierte technische Beschreibung des Java-Quellcodes und der in C++ entwickelten DLL zur Kommunikation mit der Windows-Registry.
3. ALLGEMEINE HINWEISE: Erläuterung zur mangelnden Portabilität der Lösung und den Herausforderungen bei der Registry-Manipulation.
4. QUELLEN: Auflistung der verwendeten Referenzen und Skripte zur Recherche.
5. SOFTWARE: Übersicht der für die Entwicklung eingesetzten Werkzeuge wie JDK1.2 und Microsoft Visual Studio 6.0.
Schlüsselwörter
Java, Windows Registry, JNI, Java Native Interface, C++, Dynamic Link Library, DLL, ADVAPI32.DLL, Dateierweiterungen, API, RegOpenKeyEx, Programmierung, Windows 2000, Konsolenanwendung
Häufig gestellte Fragen
Worum geht es in dieser Arbeit grundsätzlich?
Es geht um die Entwicklung eines Java-Programms, das Registry-Einträge unter Windows verwalten kann, indem es mittels JNI auf eine native C++-DLL zugreift.
Was sind die zentralen Themenfelder?
Die zentralen Themen sind die Interoperabilität zwischen Java und C++, der direkte Zugriff auf Windows-Systemkomponenten und die Programmierung unter Windows.
Was ist das primäre Ziel der Arbeit?
Das Ziel ist die Erstellung einer Schnittstelle, die es erlaubt, über Java-Programme Dateierweiterungen in der Windows-Registry auszulesen und neue Verknüpfungen hinzuzufügen.
Welche wissenschaftliche Methode wird verwendet?
Es wird eine anwendungsorientierte Implementierungsmethode genutzt, bei der native Methoden in Java deklariert und mittels C++ in einer DLL implementiert werden.
Was wird im Hauptteil behandelt?
Der Hauptteil befasst sich mit dem Aufbau des Java-Programms, der Funktionsweise der Windows-API-Aufrufe (ADVAPI32.DLL) und der Erstellung der Header- sowie CPP-Dateien.
Welche Schlüsselwörter charakterisieren die Arbeit?
Schlüsselwörter sind JNI, Java, Registry, C++, DLL, Dateierweiterungen und Systemprogrammierung.
Warum ist das Programm nicht portabel?
Die Struktur der Windows-Registry variiert zwischen Betriebssystemen und sogar zwischen unterschiedlichen Rechnern, weshalb der Zugriff nicht einheitlich gestaltet werden kann.
Welche Rolle spielt die ADVAPI32.DLL?
Sie dient als Schnittstelle, um die für die Registry-Manipulation notwendigen Funktionen wie das Öffnen, Lesen und Erstellen von Schlüsseln zur Verfügung zu stellen.
- Quote paper
- Patrick Harms (Author), 2002, Windows Registry Abfrage mit dem Java Native Interface, Munich, GRIN Verlag, https://www.grin.com/document/67541