Ich schreibe einen C# -Dienst, der Informationen vom aktuell angemeldeten Benutzer wie das aktive Fenster oder die letzte Mausbewegung abrufen muss. Ich habe bereits gelernt, dass ich diese Informationen mithilfe der user32.dll abrufen kann, aber das funktioniert nur aus dem Benutzerkontext, der die Methoden aufruft.So erhalten Sie das aktive Fenster eines angemeldeten Benutzers von einem Dienst
Auf diese Weise konnte mein Dienst nur Informationen über sich selbst abrufen, aber nicht über den "echten" Benutzer. Ich habe auch gehört, dass dies mit WTSEnumerateSessions, OpenWindowStation, EnumDesktops usw. möglich sein sollte, aber ich habe kein Beispiel gefunden, das mir zeigt, wie das geht.
Hat jemand eine Ahnung (oder vielleicht einige Codebeispiele), wie ich mein Ziel erreichen kann?
In der Tat. Ich mag es auch nicht sehr, aber wenn die App in der Benutzersitzung läuft, kann der Benutzer sie abbrechen. Dies könnte verhindert werden, falls es als Dienst ausgeführt wird. – Marcus
Lassen Sie den Dienst einfach die Anwendung neu starten. – Samuel
Ich habe darüber nachgedacht, eine Benutzeranwendung und einen zusätzlichen Dienst zu erstellen, aber wie kann ein Dienst eine Anwendung in der Benutzersitzung neu starten, ohne die Anmeldeinformationen des Benutzers zu haben? – Marcus