WindowsImpersonationContext : Windows Principal : Windows C# Source Code


Custom Search

C# Source Code » Windows » Windows Principal »

 

WindowsImpersonationContext








    

using System;
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(WindowsIdentity.GetCurrent().Name);
            WindowsImpersonationContext impContext = identity.Impersonate();
            Console.WriteLine(WindowsIdentity.GetCurrent().Name);

            impContext.Undo();

            Console.WriteLine(WindowsIdentity.GetCurrent().Name);
        }
    }
}
           
       
    
   
  
   







HTML code for linking to this page:

Follow Navioo On Twitter

C# Source Code

 Navioo Windows
» Windows Principal