Angemeldeten Benutzer herausfinden.
-
Guten Morgen.
Mein Problem ist Folgendes:
Ich habe einen Dienst geschrieben, der Prozesse überwacht und ggf. einen nicht gewünschten Prozess abwürgt. Dies soll aber nur geschehen wenn ein User OHNE Admin-Rechte angemeldet ist.
Nun meine Frage, wie finde ich raus welcher User angemeldet ist? Ich weiss wie ich bei "normalen" Programmen an den Usernamen komme, aber bei Diensten funktioniert das logischerweise nicht.
Ideal wäre eine Lösung mit der ich rausbekomme ob der aktuelle User Adminrechte besitzt oder nicht.Besten Dank schon mal vorab.
-
Entweder ist mein Problem nicht ganz so einfach zu lösen oder aber ich habs schlecht beschrieben.
Niemand eine Idee?
Wenns den gar nicht anders geht wäre auch eine Lösung mittels Textdatei gangbar. Dazu müsste ich mich aber an eine... hmmmm... Anmelderoutine anhängen. Kann mir dabei jemand helfen? Gibt es sowas wie eine BAT die ausgeführt wird, wenn der User gewechselt/angemeldet wird? Das Ding müsste unter XP und Vista laufen.
-
Ich hoffe ich bin noch nicht zu spät.
Den Benutzer, der das Programm ausführt, kannst du mit Environment.UserName ermitteln:
http://msdn.microsoft.com/de-de/library/system.environment.username.aspxDas heißt dein Programm dürfte dann nicht als Dienst vom System, sondern vom User selbst im Autostart ohne Form gestartet werden. Die Benutzerrechte bkommst du so bestimmt irgendwie über die Konsole raus.
Die andere Möglichkeit schaut aus wie folgt:
WindowsIdentity id = WindowsIdentity.GetCurrent(); WindowsPrincipal p = new WindowsPrincipal(id); bool isAdmin = p.IsInRole(WindowsBuiltInRole.Administrator);
Du musst nur noch eventuelle Exceptions per catch abfangen und/oder isAdmin zurückgeben.