Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Überprüfen, ob die Arbeitsstation gesperrt ist (https://www.delphipraxis.net/98573-ueberpruefen-ob-die-arbeitsstation-gesperrt-ist.html)

HansHans 29. Aug 2007 10:23


Überprüfen, ob die Arbeitsstation gesperrt ist
 
Hallo,

wie kann ich in einem Dienst prüfen, ob die Arbeitsstation gesperrt ist oder nicht?

dieser Code funktioniert nur in einer Anwendung nicht aber in einem Dienst!!

Delphi-Quellcode:
function IsWorkstationLocked: Boolean;
var
  hDesktop: HDESK;
begin
  Result := False;
  hDesktop := OpenDesktop('default',
    0, False,
    DESKTOP_SWITCHDESKTOP);
  if hDesktop <> 0 then
  begin
    Result := not SwitchDesktop(hDesktop);
    CloseDesktop(hDesktop);
  end;
end;

DGL-luke 29. Aug 2007 11:07

Re: Überprüfen, ob die Arbeitsstation gesperrt ist
 
Reine vermutung aus dem Hinterkopf - kann es sein, dass du gewisse Security-Tokens (oder wie auch immer die Dinger heißen) holen musst, um den Desktop wechseln zu dürfen(auch wenn du unter SYSTEM läufst)?

Die Anwendung muss den (Benutzer-)Desktop ja nicht öffnen, weil sie direkt in ihm läuft.

Dezipaitor 29. Aug 2007 11:24

Re: Überprüfen, ob die Arbeitsstation gesperrt ist
 
Was ist denn die Fehlermeldung? GetLastError fehlt hier.

HansHans 29. Aug 2007 12:24

Re: Überprüfen, ob die Arbeitsstation gesperrt ist
 
@Dezipaitor
GetLastError liefert 5 -> Zugriff verwigert

Dezipaitor 29. Aug 2007 12:40

Re: Überprüfen, ob die Arbeitsstation gesperrt ist
 
Für welchen Befehl?

HansHans 29. Aug 2007 13:10

Re: Überprüfen, ob die Arbeitsstation gesperrt ist
 
@Dezipaitor
bei der Funktion: hDesktop := OpenDesktop('default',0,false,DESKTOP_SWITCHDESKTO P);[list][*]

Dezipaitor 29. Aug 2007 13:35

Re: Überprüfen, ob die Arbeitsstation gesperrt ist
 
hast du beim Dienst : "Interaktion mit dem Desktop" eingestellt?

Verwendest du Vista ?

HansHans 30. Aug 2007 07:00

Re: Überprüfen, ob die Arbeitsstation gesperrt ist
 
@Dezipaitor
wie kann ich "Interaktion mit dem Desktop" einstellen?
der Dienst läuft unter Win XP

Luckie 30. Aug 2007 09:17

Re: Überprüfen, ob die Arbeitsstation gesperrt ist
 
Das kannst du bei der Dienstkonfiguration in der Diensteverwaltung machen. Davon ist aber abzuraten, da es ein potentielles Sicherheitsloch darstellt und ist deswegen unter Windows Vista auch nicht mehr möglich.

Dezipaitor 30. Aug 2007 10:00

Re: Überprüfen, ob die Arbeitsstation gesperrt ist
 
Verwende mal vorher OpenWindowStation und dann SetProcessWindowStation, damit wird der Prozess der WindowStation zugewiesen und kann etwas mehr mit den Desktops.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz