Frage

Ich habe eine c # Anwendung, die unter dem Systemkonto auf einer Maschine gestartet wird und stellt einige Dialoge an einen Benutzer. Wenn ein normaler Benutzer abmeldet wird die Anwendung auch beendet. Ich hätte gedacht, dass seit seinem unter dem Systemkonto ausgeführt wird, es würde weiterhin trotz des Benutzers ausführt nicht angemeldet zu werden.

Alle Informationen darüber, warum dies geschieht, würden geschätzt.

War es hilfreich?

Lösung

Wenn Sie Ihre App wollen am Laufen zu halten, nachdem der Benutzer abgemeldet hat (zum Beispiel Zustand zu halten, solange der Computer läuft), benötigen Sie einen Dienst. Allerdings Dienstleistungen werden stark von der Anzeige UI abgeraten. Wenn Sie beide Langlauf und UI benötigen, sollten Sie einen Service Schreiben Sie Ihre Daten zu speichern, und eine Anwendung, die jedes Mal ein Benutzer anmeldet, dass läuft zeigt UI und interagiert mit dem Service.

Andere Tipps

Ist Ihre Anwendung ein Dienst? Es klingt wie das, was Sie wollen, ist ein Dienst. Beachten Sie, dass jeder Prozess wie jeder Benutzer ausführen können, aber das macht es keinen Service. Wenn Ihr Prozess als Dienst implementiert wird, dann wird es weiterhin auch ohne angemeldeten Benutzer ausgeführt wird.

Dies ist eine Sicherheitsfunktion, wenn ein Benutzer Sitzung beendet Anwendungen, die sie aufgerufen werden beendet. Wenn Sie eine Anwendung benötigen außerhalb einer Benutzer-Session ausführen müssen Sie einen Dienst jedoch seit seiner in der eigenen Sitzung Dienste kann nicht „erreichen in“ die Benutzer-Session mit Nachrichten und so weiter.

Sie benötigen eine Anwendung als Windows-Dienst ausgeführt werden.

Sie müssen Ihre Anwendung als Windows-Dienst erstellen. Wenn Ihre Anwendung Dialoge zeigt dann würden Sie müssen das prüfen ‚mit Desktop erlauben zu interagieren‘ und unter lokalem Systemkonto ausgeführt.

Allerdings ist ein besserer Ansatz wäre, eine abfragbare Schnittstelle aus der Anwendung aufzudecken mithilfe von WCF oder Remoting, die Sie Benutzern angezeigt werden können eine separate Anwendung. Wenn Sie Benachrichtigungen von Ihrer Anwendung wünschen, wenn niemand auf dann angemeldet ist, möchten Sie vielleicht auf E-Mails oder veröffentlichen Ereignisse in einer separaten WCF / Web Services / Endpunkt betrachten Remoting zu senden.

Da der Prozess von explorer.exe gestartet wurde, wird es beendet werden, wenn sich der Benutzer abmeldet, unabhängig davon, welches Konto es unter läuft. Das ist einfach die Art, wie Windows funktioniert. Um den Prozess zu ermöglichen, weiterhin läuft es ein Dienst sein muss oder möglicherweise durch den Task-Scheduler gestartet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top