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. [...]
Inhalt
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
1. Aufgabenstellung
Registry Abfrage mit Java (JNI)
Grundlage
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.
Testkriterien
Erstellen Sie ein Java-Programm, welches folgende Eigenschaften besitzt:
- Einlesen einer Eingabemaske, es werden alle Extension mit den dazugehörigen Programmen aufgelistet
- Eintragen einer neuen Verknüpfung
2. Lösung
Allgemeine Lösungsreihenfolge
Um diese Aufgabe zu lösen musste erst einmal ein Java-Quellcode erstellt werden. Dieser baut die geforderte Eingabemaske auf und ruft dann entweder eine Methode zum ausgeben der einzelnen Erweiterungen mit ihren zugehörigen Programmen oder eine Methode zum erstellen eines Eintrags einer Erweiterung in die Registrierung auf. Diese Methoden werden als native Methoden deklariert. Der Quelltext wird dann durch den Java-Compiler compiliert. Mit Hilfe des javah-Programms wird nun eine Header-Datei erzeugt, die bereits eine Deklaration der vorher als nativ deklarierten Methoden enthält. Mit Hilfe eines Programms zum Erstellen von Dynamic Link Librarys wird nun in dieser DLL die Implementierung der Methoden vorgenommen.
Die Implementierung erfolgt mit Hilfe von Zugriffen auf API-Funktionen. Die von Windows bereitgestellte ADVAPI32.DLL stellt diverse Funktionen für den Zugriff auf die Registrierung bereit. Diese Funktionen werden später noch weiter spezifiziert.
Das Java-Programm
Erläuterung
Im Quelltext werden zuerst die nativen Methoden deklariert:
Abbildung in dieser Leseprobe nicht enthalten
Damit der Java-Compiler erkennen kann, wo diese Methoden implementiert sind muss mit Hilfe der Funktion System.loadLibrary(String) die entsprechende Bibliothek aufgerufen werden. Dieser Aufruf muss als static deklariert sein, damit die Bibliothek schon vor dem Programmstart geladen wird.
Abbildung in dieser Leseprobe nicht enthalten
Um den späteren Zugriff auf die Methoden etwas zu erleichtern und um auch sämtliche Komponenten der Klasse Environment nutzen zu können wird nun in der Methode public static void main (String[]) ein Object der Klasse erstellt mit dem das eigentliche Programm als Methode public void mainProg (String[]) aufgerufen wird.
Abbildung in dieser Leseprobe nicht enthalten
Die Implementierung des Programms erfolgt nun in der Methode public void mainProg (String[]). Es wird als erstes eine Variable int choose festgelegt in der dann die spätere Menueauswahl des Benutzers gespeichert wird. Dem Benutzer wird dann in einer Ausgabe kurz die Aufgabe des Programms erklärt.
Abbildung in dieser Leseprobe nicht enthalten
Danach wird die Eingabemaske mit diversen System.out.println(String) – Befehlen aufgebaut und um die Auswahl gebeten. Diese wird in choose gespeichert.
Abbildung in dieser Leseprobe nicht enthalten
Auf Basis der Auswahl wird mit verschiedenen if – Anweisungen festgelegt wie fort gefahren wird. Für den Fall, dass eine neue Erweiterung eingetragen werden soll werden sowohl die Erweiterung als auch das entsprechende Programm von der Konsole eingelesen und in den Variablen String erw und String path gespeichert. Sollte die Variable erw leer sein wird keine neue Erweiterung eingetragen. Beide Variablen werden für den Fall, dass erw nicht leer ist an die native Methode zum Erstellen eines neuen Keys public native void neuerKey(String ext, String path) übergeben und diese Methode aufgerufen.
Abbildung in dieser Leseprobe nicht enthalten
Sollen jedoch nur alle bereits vorhandene Erweiterungen aufgelistet werden wird die Methode public native void getAlleErweiterungen() dafür aufgerufen.
Abbildung in dieser Leseprobe nicht enthalten
Der Aufbau der Eingabemaske und das darauf folgende Einlesen und entsprechende Reagieren wird solange wiederholt, bis der Benutzer ausgewählt hat das Programm zu beenden. Daraus ergibt sich nun der gesamte Quelltext.
Quelltext
Abbildung in dieser Leseprobe nicht enthalten
[...]
- Arbeit zitieren
- Patrick Harms (Autor:in), 2002, Windows Registry Abfrage mit dem Java Native Interface, München, GRIN Verlag, https://www.grin.com/document/67541
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen.