Allow service to interact with desktop in Windows
Dienstleistungen.msc - > Action > Eigenschaften > Anmelden > Allow service to interact with desktop, ich konnte meinen Dienst mit dem desktop interagieren. Was bedeutet es genau? Wie kann ich es verwenden, um sound Abspielen (MP3, WAV, etc.) aus meinem service?
InformationsquelleAutor user514989 | 2010-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werde ich mir einige Freiheiten hier bei dem Versuch, zu interpretieren, Ihre Frage aus keywords. In der Zukunft, bitte verbringen mehr Zeit, schreiben Sie Ihre Fragen so, dass Sie den Sinn auf eine andere person versucht, Sie zu Lesen und Sie zu verstehen.
Gibt es ein Kontrollkästchen unter der Registerkarte "Anmelden" in das Fenster Eigenschaften für eine Windows-Dienst, der aufgerufen wird, "Allow service to interact with desktop." Wenn Sie versuchen, um zu überprüfen, dass das Feld programmgesteuert, müssen Sie die
SERVICE_INTERACTIVE_PROCESS
- flag beim erstellen des Diensts mit der"CreateService"
API. (Siehe MSDN).Beachten Sie jedoch, dass, wie der Windows-Vista-Dienste ist es strengstens verboten, direkte Interaktion mit einem Benutzer:
Dieses "feature" ist gebrochen, und die konventionelle Weisheit besagt, dass Sie sollten nicht haben wurden unter Berufung auf ihn sowieso. Dienstleistungen sind nicht gedacht, um bieten eine Benutzeroberfläche, oder zulassen, dass jede Art der direkten Benutzer-Interaktion. Microsoft hat schon warnen, dass diese Funktion vermieden werden, die seit den frühen Tagen von Windows NT wegen der möglichen Sicherheitsrisiken. Larry Osterman argumentiert, warum es war immer eine schlechte Idee. Und er ist nicht der einzige.
Dort sind einige möglich Problemumgehungen, jedoch, wenn Sie absolut muss diese Funktionalität. Aber ich bitte Sie eindringlich, zu überlegen, Ihre Notwendigkeit sorgfältig und erkunden alternative designs für Ihren Dienst.
So, wie Sie laufen, GUI testing services (wie Selen) ? Interaktion mit desktop ist sehr nützlich für Tests mit realen Browsern (ich meine nicht kopflos), ohne verlassen müssen, um eine Sitzung zu öffnen... der Browser scheint nicht stabil genug zu sein, wenn in reinen service-Modus...
InformationsquelleAutor Cody Gray
, Da der Dienst nicht ausgeführt wird im Rahmen einer Benutzer-Sitzung, erstellen Sie eine zweite Anwendung, um mit dem Dienst interagieren.
Beispielsweise der Microsoft SQL-server ein monitoring-tool. Diese Anwendung läuft in der Benutzer-session und verbindet den service, das Ihnen die information, ob der Dienst ausgeführt wird, und so dass Sie zu stoppen und starten Sie den Datenbank-Dienst.
Da, die Anwendung läuft in einer Benutzer-session, die Sie mit dem desktop interagieren kann durch die Anwendung.
Ich habe ein gutes Beispiel dafür, warum brauche ich diese aktiviert. Meinen service können ausführen von benutzerdefinierten Skripts. Manchmal sind die Anwendungen in diesen Skripts haben eine Anwendung Benutzeroberfläche und keine entsprechende Konsole-version. Ohne diese option aktiviert ist, werden die Anwendungen nicht starten können und die Skripte im wesentlichen scheitern. Es ist nicht so, dass ich persönlich programmiert haben, der service in einer Weise, wo ich die Möglichkeit nutzen, dies ist ein echter Fall für mit es aktiviert.
InformationsquelleAutor Pieter van Ginkel
Müssen Sie serviceinstaller und schreiben Sie folgenden code in gebundener Ereignis der serviceinstaller.
Funktionierte nicht auf Windows 10.
InformationsquelleAutor Rupesh Kadam
auf 64-bit-Maschine ?
InformationsquelleAutor Venkatesh Boda