Jump to content

Check if desktop/windows is locked end exit with error defined, if it is


twp
 Share

Recommended Posts

Have tried a couple of functions, shown below, but none seem to work at deployment via SCCM (2012 sp1). Does anyone have a solution for this? Need to check at the beginning of the script if the computer is locked and if so abort the script with a predefined error code.

#include <APIConstants.au3>
#include <WinAPIEx.au3>
Sleep(5000)

If _IsLocked() Then
    ConsoleWrite('Workstation Is Locked.' & @CRLF)
    Exit 666
Else
    ConsoleWrite('Workstation Not Locked.' & @CRLF)
EndIf


Func _IsLocked()
    Local $fIsLocked = False
    Local Const $hDesktop = _WinAPI_OpenDesktop('Default', $DESKTOP_SWITCHDESKTOP)
    If @error = 0 Then
        $fIsLocked = Not _WinAPI_SwitchDesktop($hDesktop)
        _WinAPI_CloseDesktop($hDesktop)
    EndIf
    Return $fIsLocked
EndFunc   ;==>_IsLocked
Sleep(5000)
_WinLocked()
MsgBox(0, "Test01", "Workstation Not Locked")

Func _WinLocked()
    $res=0
    $h=DllCall("User32.dll","int","OpenInputDesktop","int",0,"int",0,"int",0x0001)
    if $h[0]=0 then $res=1
    DllCall("user32.dll", "int", "CloseDesktop", "int", $h[0])
    If $res = 1 Then
        MsgBox(0, "Test02", "Workstation Locked")
        exit($res)  ;1=computer locked, 0=unlocked
    EndIf
EndFunc

They work before I turn them into EXE files, but after that they only work when run as administrator and when I deploy the _WinLocked function via SCCM the script exits directly. Is there a function that can work when run as System via SCCM?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...