CSharp examples for System:Windows
Logon user on Windows
using System;// w ww .jav a2s. c o m using System.IO; using System.Security.Principal; using System.Security.Permissions; using System.Runtime.InteropServices; [assembly:SecurityPermission(SecurityAction.RequestMinimum, UnmanagedCode=true, ControlPrincipal=true)] class MainClass { const int LOGON32_PROVIDER_DEFAULT = 0; const int LOGON32_LOGON_INTERACTIVE = 2; [DllImport("advapi32.dll", SetLastError=true, CharSet=CharSet.Unicode)] static extern bool LogonUser(string userName, string domain, string password, int logonType, int logonProvider, ref IntPtr accessToken); public static void Main(string[] args) { IntPtr accessToken = IntPtr.Zero; bool success = LogonUser( args[0], // username to log on. ".", // use the local account database. args[1], // user?s password. LOGON32_LOGON_INTERACTIVE, // create an interactive login. LOGON32_PROVIDER_DEFAULT, // use the default logon provider. ref accessToken // receives access token handle. ); if (success) { Console.WriteLine("LogonUser returned error {0}", Marshal.GetLastWin32Error()); } else { WindowsIdentity identity = new WindowsIdentity(accessToken); Console.WriteLine("Identity before impersonation = {0}", WindowsIdentity.GetCurrent().Name); WindowsImpersonationContext impContext = identity.Impersonate(); Console.WriteLine("Identity during impersonation = {0}", WindowsIdentity.GetCurrent().Name); impContext.Undo(); Console.WriteLine("Identity after impersonation = {0}", WindowsIdentity.GetCurrent().Name); } } }