# Windows-Dienst und angemeldeter Benutzer



## RicoSoft (14. Dez 2005)

folgendes Problem: Ich habe unter Windows einen Dienst am Laufen. Dieser ist ein Proxy, der eine GUI-Applikation startet. Das klappt soweit ganz gut, wenn eine Anfrage auf einem Port kommt, dann startet er auch alles wie er sollte.

Jetzt mein Problem: Der Dienst läuft als "SYSTEM". Das Problem ist jetzt, dass ich gerne rausfinden würde, wer den im Moment am Desktop angemeldet ist. Denn dieser Benutzer sollte automatisch am GUI angemeldet werden.

Also: Dienst --> SYSTEM
Dienst startet ein GUI, soll aber dafür den aktuell angemeldeten Benutzeraccount verwenden (ist sowieso eine Batch datei, also RUNAS kann ich verwenden, muss aber dort den richtigen Benutzer einsetzen)

Hat da irgendjemand eine Idee?


----------



## thE_29 (14. Dez 2005)

System.getProperty("user.name") bringt SYSTEM zurück oder??

Was bringt set zurück (bei Username)

bzw, java 1.5 hat ja getEnv("USERNAME") oder??

was bringt das?


----------



## RicoSoft (14. Dez 2005)

ja, leider bringt user.name SYSTEM zurück, das ist mein grosses Problem.


----------



## roughelement (14. Dez 2005)

Hi,

ist den Usernamen vom Client aus lesen um ihn beim connect zu übergeben zu aufwendig?


----------



## RicoSoft (14. Dez 2005)

das problem ist so: der benutzer ist auf einem remote host angemeldet unter irgendeinem benutzernamen. von dort connecter er remote auf den lokalen pc, der dann ein programm aufstartet, wenn es noch nicht gestartet ist. und dieses sollte jetzt eben unter dem angemeldeten benutzernamen laufen.

ich kenne in der zwischenzeit eine dll, die mir da eine funktion liefert und werde wohl über jni einen zugriff darauf programmieren.


----------



## RicoSoft (16. Dez 2005)

so mal als status quo:

- grundsätzlich scheint das nicht direkt zu gehen
- ich lese mir jetzt über jni die laufenden prozesse unter windows ein, suche explorer.exe und nehme den benutzernamen, der dort vermerkt ist. das funktioniert sogar.


----------



## Milbo (25. Jan 2008)

Hallo,

hab nen ähnliches Problem. Ich will den angemeldeten User oder Benutzerlevel herausfinden bzw ob der User in einer speziellen Gruppe ist.

Letztendlich geht es um die Idee, dass nur ein Admin bzw der User, welcher das Programm installiert hat die Seriennummer sehen soll. Hmm

Dafür müsste ich eben entweder Wissen, welcher Benutzer sich angemeldet hat bzw ob er in der Gruppe Admin ist.


Es gibt also tatsächlich nix fertiges von sun, welches auf Windows und LInux läuft?

Könnt ja sein, dass sich inzwischen was geändert hat. Nuja, dann werde ich mal den Weg von RicoSoft gehen müssen



> ich kenne in der zwischenzeit eine dll, die mir da eine funktion liefert und werde wohl über jni einen zugriff darauf programmieren.



Hmmm welche dll? Werds halt auch mal mit JNI probieren, vielleicht gibt ja unter Java 6 inzwischen eine Funktion

cya da Milbo


UPDATE:

Also ich weiss nicht ab wann, aber mit Java 6 gehts total einfach mit:  System.getenv("USERNAME")
Da gibts noch ne Menge, was angeboten wird, einfach mal mit  System.getenv() ausprobieren ;-)

cya da Milbo


----------



## Ariol (25. Jan 2008)

Ruf doch auf dem Client

```
System.getProperties().getProperty("user.name");
```
auf und übertrag den entsprechenden Wert mit übers Netz...

Funktioniert das nicht?


----------



## Milbo (25. Jan 2008)

Danke,... (antort siehe update obe)


also mit  System.getenv("USERNAME") geht es wunderbar. Ich weiss jez nur nicht, ab welcher Javaversion das geht.


----------



## Ariol (26. Jan 2008)

Die Methode war zumindest schon in 1.4.2 drin. Da das ja wiederum auf Systemvariablen zurückgreift sollte es auch damit funktionieren.


----------



## maki (26. Jan 2008)

> Es gibt also tatsächlich nix fertiges von sun, welches auf Windows und LInux läuft?


Du könntest per LDAP auf das Windows Active Directory zugreifen, am besten im Zusammenspiel mit JAAS.


----------

