Desktop Functions:

   Smart Device Functions:

Show Recent Changes
Subscribe (RSS)
Misc. Pages
Helpful Tools
Suggested Reading
Website TODO List
Support Forum
Download Visual Studio Add-In

Terms of Use
Privacy Policy
LogonUserEx (advapi32)
The LogonUserEx function attempts to log a user on to the local computer. The local computer is the computer from which LogonUserEx was called. You cannot use LogonUserEx to log on to a remote computer. You specify the user with a user name and domain, and authenticate the user with a plaintext password. If the function succeeds, you receive a handle to a token that represents the logged-on user. You can then use this token handle to impersonate the specified user or, in most cases, to create a process that runs in the context of the specified user.

C# Signature:

[DllImport("advapi32.dll", SetLastError=true)]

public static extern bool LogonUserEx(

  string lpszUsername,
  string lpszDomain,
  string lpszPassword,
  int dwLogonType,
  int dwLogonProvider,
  out IntPtr phToken,
  IntPtr ppLogonSid, // nullable
  IntPtr ppProfileBuffer, // nullable
  IntPtr pdwProfileLength, // nullable
  IntPtr pQuotaLimits // nullable


VB Signature:

<DllImport("advapi32.dll", SetLastError:=True)> _

Private Shared Function LogonUserEx( _

  ByVal lpszUsername As String, _
  ByVal lpszDomain As String, _
  ByVal lpszPassword As String, _
  ByVal dwLogonType As Integer, _
  ByVal dwLogonProvider As Integer, _
  <Out()> ByRef phToken As IntPtr, _
  ByVal ppLogonSid As IntPtr, _
  ByVal ppProfileBuffer As IntPtr, _
  ByVal pdwProfileLength As IntPtr, _
  ByVal pQuotaLimits As IntPtr _

) As Integer

End Function

User-Defined Types:


Alternative Managed API:

Do you know one? Please contribute it!


This is new in Server2003 and XP.

Tips & Tricks:

Please add some!

Sample Code:

Private Enum Logon32Type

  Interactive = 2
  Network = 3
  Batch = 4
  Service = 5
  Unlock = 7
  NetworkClearText = 8
  NewCredentials = 9

End Enum

Private Enum Logon32Provider

  [Default] = 0
  WinNT40 = 2
  WinNT50 = 3

End Enum

Public Shared Function LogonUser(ByVal userName As String, ByVal domain As String, ByVal password As String) As IntPtr

  Dim token As IntPtr = IntPtr.Zero
  If LogonUserEx(userName, domain, password, Logon32Type.Batch, Logon32Provider.Default, token, Nothing, Nothing, Nothing, Nothing) = 0 Then
    Throw New ComponentModel.Win32Exception(Marshal.GetLastWin32Error())
  End If
  Return token

End Function

LogonUserEx on MSDN

Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

Access directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version