Lade Inhalt...

Windows Registry Abfrage mit dem Java Native Interface

Ausarbeitung 2002 17 Seiten

Informatik - Software

Leseprobe

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

[...]

Details

Seiten
17
Jahr
2002
ISBN (eBook)
9783638586405
Dateigröße
564 KB
Sprache
Deutsch
Katalognummer
v67541
Institution / Hochschule
Hochschule Harz Hochschule für angewandte Wissenschaften
Note
1,0
Schlagworte
Windows Registry Abfrage Java Native Interface

Autor

Zurück

Titel: Windows Registry Abfrage mit dem Java Native Interface