Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.351 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Windows 10 - GetModuleHandle('USER32.DLL') & LockWorkStation funktioniert nicht

  Alt 8. Nov 2017, 14:35
das Problem ist, dass dieser in einem Service ausgeführt wird. Unter Windows XP klappt das noch, aber ab Windows 7 läuft das nicht mehr. Hat jemand eine Idee, wie man das lösen könnte?
Das steht ja auch in der Dokumentation...
https://msdn.microsoft.com/de-de/lib...or=-2147217396
Zitat:
The LockWorkStation function is callable only by processes running on the interactive desktop. In addition, the user must be logged on, and the workstation cannot already be locked.
Das wirst du auch nicht umgehen können außer indem du im aktiven Userdesktop einen Prozess startest, der das macht.

Im Dienst funktioniert das nicht, weil es auch mehrere interaktive Desktops parallel geben könnte. Das System wüsste also nicht welche es sperren sollte.

// EDIT:
CreateProcessAsUser kannst du in Delphi einfach aufrufen, das gibt es in der Unit Windows schon.

Alternativ kannst du evtl. auch alle Sessions enumerieren (WTSEnumerateSessions) und trennen (WTSDisconnectSession), aber ich weiß nicht, ob das auch ohne RDP funktioniert.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke ( 8. Nov 2017 um 14:40 Uhr)
  Mit Zitat antworten Zitat