Visual C++ 2008OpenInputDesktop() Sichere/Login Desktop
zu bestimmen, wie festzustellen, ob die momentan interaktiven Benutzer sind entweder an dem Locked-Desktop (Windows-Key L) oder der Shutdown-Bildschirm (Vista oder 7) Warten auf das Schließen von Programmen beim Abmelden.
HDESK hd = OpenInputDesktop (0, falsch, READ_CONTROL);
Dies funktioniert gut für eine Benutzeranwendung auf dem Standarddesktop, schlägt aber mit Fehlercode 5 bei den gesperrten oder heruntergefahrenen Desktops fehl, da der Benutzer keine Berechtigungen zum Öffnen des sicheren Desktopobjekts hat.
Das Aufrufen von einem Dienst, der unter dem Konto SYSTEM ausgeführt wird, gibt Fehler 1 (ungültige Funktion) zurück. Ich glaube, dass der Dienst in jedem Fall in der falschen Sitzung (Sitzung 0) ist und den interaktiven Desktop für keine andere Sitzung ermitteln kann.
Ich habe eine App unter dem derzeit interaktiven Benutzer ausgeführt, und auch, der Systemdienst ausgeführt, so könnte der Code von beiden.
Sollte ich vielleicht versuchen, alle Sitzungen, Fensterstationen und Desktops aufzuzählen?
Wie kann ich den derzeit interaktiven Desktop ermitteln, wenn ich den Aufruf von OpenInputDesktop nur vom SYSTEM-Dienst in Sitzung 0 ausführen kann?
Vielleicht wäre die Antwort, irgendwie zu überwachen, wenn der Benutzer Desktops wechselt? Ist das möglich? – Peter350