6 out of 10 rated this helpful - Rate this topic

LockWorkStation function

Applies to: desktop apps only

Locks the workstation's display. Locking a workstation protects it from unauthorized use.

Syntax

BOOL WINAPI LockWorkStation(void);

Parameters

This function has no parameters.

Return value

If the function succeeds, the return value is nonzero. Because the function executes asynchronously, a nonzero return value indicates that the operation has been initiated. It does not indicate whether the workstation has been successfully locked.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

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.

Common reasons the workstation might not be locked even if the function succeeds include the following: no user is logged on, the workstation is already locked, the process is not running on the interactive desktop, or the request is denied by the Graphical Identification and Authentication (GINA) DLL.

This function has the same result as pressing Ctrl+Alt+Del and clicking Lock Workstation. To unlock the workstation, the user must log in. There is no function you can call to determine whether the workstation is locked. To receive notification when the user logs in, use the WTSRegisterSessionNotification function to receive WM_WTSSESSION_CHANGE messages. You can use session notifications to track the desktop state so you know whether it is possible to interact with the user.

Examples

For an example, see How to Lock the Workstation.

Requirements

Minimum supported client

Windows 2000 Professional

Minimum supported server

Windows 2000 Server

Header

Winuser.h (include Windows.h)

Library

User32.lib

DLL

User32.dll

See also

System Shutdown Functions

 

 

Send comments about this topic to Microsoft

Build date: 2/3/2012

Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
VB6 Declaration

Private Declare Function LockWorkStation Lib "user32" () As Long

VB6 Declaration
Private Declare Function LockWorkStation Lib "user32" () As Long
C# Code
    public static class Environment2
    {
        /// <summary>
        /// Locks the workstation's display. Locking a workstation protects it from unauthorized use.
        /// </summary>
        /// <returns>
        /// If the function succeeds, the return value is true. Because the function executes asynchronously, a true return value indicates that the operation has been initiated. It does not indicate whether the workstation has been successfully locked.
        /// If the function fails, the return value is false. To get extended error information, call GetLastError.
        /// </returns>
        [DllImport("User32.Dll", EntryPoint = "LockWorkStation"), Description("Locks the workstation's display. Locking a workstation protects it from unauthorized use.")]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool LockWorkStation();

        /// <summary>
        /// Locks the workstation's display. Locking a workstation protects it from unauthorized use.
        /// </summary>
        /// <exception cref="Win32Exception">if the lock fails more information can be found in this Exception class</exception>
        public static void LockWorkstation()
        {
            if (!LockWorkStation())
                throw new Win32Exception(Marshal.GetLastWin32Error());
        }
    }
vb.net syntax
<DllImport("user32.dll")> _
Public Shared Function LockWorkStation() As Boolean End Function
C# syntax
[DllImport("user32.dll")]
public static extern bool LockWorkStation();