Java und Windowsrechte?

sabek

Grünschnabel
Hallo,
habe ein Progrämmchen geschrieben mit 1.6_17 welches auch entpackt mitgegeben wird und einer SQLite Datenbank. Installation erfolgt über ein NSIS Script und wird in "C:Programme\.." installiert.
Alles klappt wunderbar. Es wird alles richtig installiert. Nach dem ersten Start der Anwendung wird eine Default-Datenbank-Datei in das (C:\Dokumente und Einstellungen\User\Anwendungsdaten\.....) Verzeichnis des jeweiligen User kopiert, so dass jeder dort auch Schreibrechte besitzt. Und jetzt kommt die Stelle, wo ich am verzweifeln bin ?!
Wenn Der User mit Admin-Rechten die Anwendung startet klappt alles wie es sein soll.
Startet es aber ein Standard User, bekomme ich nur den SplashScreen zu sehen, dann schliesst dieser und es passiert nichts

Hätte jemand eine Ahnung
 
Hallo,

ich würde mal behaupten, dass irgendwo eine Exception geworfen wird. Vielleicht solltest du das Programm mal von der Konsole aus starten, damit du das siehst bzw alles mitloggen.

Gruß

Sascha
 
Ja entschuldige, war bisschen spät gestern.
Exception: java.sql.SQLException: unable to open database file
Wie ich es richtig verstehe, kann es nicht die Datenbank Datei (SQLite) öffnen.

Und zwar wird diese geworfen wenn: nach dem Treiber laden, nach der DB Verbindung, wenn ich dieses ausführe:
resultSet = statement.executeQuery(sqlQuery);


Diese liegt in "C:\Dokumente und Einstellungen\User\Anwendungsdaten\.." wo die auch liegen soll.
Treiber liegt im Installationsverzeichnis in "C/:Programme"

Starte ich das Programm als Admin, funktioniert alles wie es soll.
 
Hast du mehrere User auf dem Rechner? Falls ja, dann leg die Datenbank-Datei in jedem User-Verzeichnis ab.

Gruß

Sascha
 
Ja es sind mehrere User aber:

Nach dem ersten Start der Anwendung wird eine Default-Datenbank-Datei in das (C:\Dokumente und Einstellungen\User\Anwendungsdaten\.....) Verzeichnis des jeweiligen User kopiert.

Jeder User hat eine eigene Datenbank-Datei. Schreibrechte hat natürlich ebenfalls jeder dort, sonst könnte er auch nicht die Default-Datenbank-Datei dort hinein kopieren.

Ändere ich die NTFS-Rechte bei Windows so, dass der Standard User auch Vollzugriff auf dem Ordner hat, wo sich die Programm.jar befindet (C:/Programme/..) läuft das Programm wieder.
Die mitgegebene JRE und die DB Treiber befinden sich ausserhalb dieses Ordners, also kann es nicht an den liegen. Es liegt an meiner Programm.jar.

Warum diese Schreibrechte braucht, ist mir ein Rätsel, erstellen tue ich ja dort nichts (zumindest nicht bewusst). Die einzigen Schreibzugriffe erfolgen alle in (C:\Dokumente und Einstellungen\User\Anwendungsdaten\.....) und diese z.B. logging geschieht auch.
Aber Zugriff auf die dort abgelegte Datenbank Datei, geht nicht.
 
Zuletzt bearbeitet:
Rätsel gelöst.
Problem war:
Der SQLite Treiber war "nested", d.h. beim Ausführen wurde es entpackt (natürlich so schnell, dass man es nicht sehen konnte). Da der normale User keine Schreibrechte in C:\Programme hat, konnte es auch dort nicht entpackt und somit auch nicht benutzt werden.
Nachdem ich den Neuen Treiber (sqlitejdbc-v056.jar) benutze, welches sich nicht vorher entpacken muss, funktioniert alles wunderbar.
 
Zurück