# Autostart



## mein_c_tut_w (1. Dez 2012)

Hallo,
ich möchte das mein Java-Programm automatisch beim Systemstart von alles Benutzern ausgeführt wird. Wie bekomme ich das hin? ich muss das Programm so weit ich weiß in den Ordner C:\ProgramData\Microsoft\Windows\Start Menu kopieren. dort gibt es aber Probleme mit den Adminrechten...
Gibt es eine Möglichkeit dieses Problem zu umgehen? 

Kann man überhaupt eine .jar zum autostart ausführen?


----------



## Fab1 (1. Dez 2012)

Ich meinte mal gelesen zu haben, dass das mit reinem Java nicht geht. Allerdings sollte es zusammen mit JNI möglich sein. Bin mir bei der Aussage, aber nicht so sicher.


----------



## L-ectron-X (1. Dez 2012)

Theoretisch könnte man sich eine .reg-Datei schreiben und dieses starten. 
In der reg-Datei würde der Eintrag in den Run-Schlüssel oder in den Autostart-Ordner stehen.
...oder auch direkt in die Registry schreiben.

Ansonsten Forumsuche: http://www.java-forum.org/deployment/64202-autostart-windows-fuer-java-aplikation.html

oder Google: Autostart eine Jar per Java Code @ Java - tutorials.de: Tutorial, Forum, Anleitung & Hilfe


----------



## trääät (2. Dez 2012)

warum packen es anfänger eigentlich nicht thematisch zusammenhängende themen in einem thread zu behandeln ... -.-'

zum problem selbst : entweder den "globalen" startup nutzen ... und in die registry im "HKLM\run" ne eintrag setzen ...
beides erfordert admin-rechte ... da es ja "systemweit" sein soll ...

eine andere möglichkeit wären noch services ... aber dafür braucht man auch admin-rechte und sie werden dann vor allem mit viel höheren system-rechten ausgeführt was man vermeiden sollte ...

ohne admin-rechte wird es also nicht gehen ... ansonsten kennt google die "globalen" orte für einen autostart so das dieser auf ALLE user auswirkung hat


----------



## mein_c_tut_w (2. Dez 2012)

> ohne admin-rechte wird es also nicht gehen ... ansonsten kennt google die "globalen" orte für einen autostart so das dieser auf ALLE user auswirkung hat



Was meinst du genau damit?


----------



## trääät (3. Dez 2012)

dein vorhaben bezieht sich darauf das du etwas in den GLOBALEN autostart schreibst ... der dann auch für ALLE user am system gültigkeit hat ...
und um diesen zu manipulieren , gleich auf welche art und weise ... es gibt ja mehrere , braucht es nun mal admin-rechte ...
so lange du keine admin-rechte hast kannst du maximal am autostart des gerade angemeldeten users was machen ...


----------



## mein_c_tut_w (3. Dez 2012)

und wie mach ich das im Autostart des aktuellen Benutzers, weil da muss ich ja Daten in HKCU ändern?


----------



## Marcinek (3. Dez 2012)

Für Änderungen an der Registry braucht man adminrechte.

Wieso kopierst du das nicht in den autostart ordner?


----------



## mein_c_tut_w (3. Dez 2012)

wo liegt dieser denn? ich habe nämlich gehört das er in allen windows versionen einen unterschiedlichen Pfad hat. nein für änderungen an HKCU benötigt man keine Adminrechte!


----------



## trääät (3. Dez 2012)

tja ... das ist eben das witzige am windows-autostart ...
es gibt zwar in der Win-API funktionen die dir entsprechende verzeichnisse liefern ... und die man auch über JNA einfach ansprechen kann ... aber die einfachste lösung wäre registry HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run ... aber auch dafür braucht man glaub ich erhöte rechte ... da man auch im CU nicht einfach schreiben darf


----------



## mein_c_tut_w (3. Dez 2012)

Also...
Ich hab mal folgendes versucht:
Ich hab ein testbenutzerkonto angelegt. Dieses hat keine Administrator rechte.
Wenn ich nun in der registry bin kann ich Einträge unter hkcu ändern, und diese werden wirksam. Allerdings muss ich unter Windows 7 bestätigen das ich regedit aufrufen will(keine Ahnung wie weit das die Programmierung beeinträchtigt).


----------



## trääät (3. Dez 2012)

und genau DAS ist das problem ... das nennt sich UAC ... denn REGEDIT selbst braucht admin-rechte eben weil man damit auch andere schlüssel bearbeiten kann ... also läuft REGEDIT selbst doch wieder mit adminrechten ...

wenn du jetzt allerdings mit java auf die registry zugreifen wollen würdest würdest du ACCESS DENIED bekommen weil java selbst eben NICHT mit admin-rechten läuft ...

es gibt zwar die klasse [japi]Preferences[/japi] die unter win die registry nutzen kann ... aber ob und wie man damit den besagten schlüssel editieren kann müsste google wissen ..


----------



## mein_c_tut_w (3. Dez 2012)

Das ist eben die Frage und ich hab da mitlerweile den durchblick verloren. Dort steht, das man nur einen bestimmten teil der Registry ändern kann...


----------



## trääät (3. Dez 2012)

ich würde erstmal mit Preferences.systemRoot() und Preferences.userRoot() anfangen ...
dann mit Preferences.childrenNames() und Preferences.node(String) weiter nach unten hangeln bis zum gewünschten knoten ...
und dann mit Preferences.put(String, String) den eintrag schreiben ...
das es laut doc keine exception gibt die bei fehlenden schreibrechten geraised wird könnte darauf hindeuten das du eh nur zugriff auf die knoten hast auf die du auch schreibrechte hast ...
ansonsten gucken was Preferences.isUserNode() returned ... weil "user" beduetet normalerweise das man schreibrechte hat

selbst ausprobieren kann ich es jetzt schlecht da ich unter meinem system als "SYSTEM" angemeldet bin und eh alle rechte habe ohne UAC und andere nervereien ...
auch befasse ich mich wenig mit autostart sondern bastel lieber mit system-services rum ... die dann auch entsprechende rechte haben die ich für meine programm auch brauche ...


----------

