Home
Browse all 647 examples
Download all 647 examples
Download sample chapters
Reviews
Errata
Acknowledgments
Links on .NET
Paradoxal Press

Buy directly from Paradoxal Press at $33.99 (Save 43%)



Category: Programming
Level: Beginner to seasoned
900 pages
ISBN-10 097661322-0
ISBN-13 978-097661322-0
$59.99 USA
$79.99 CANADA


Listing 6-12 extracted from chapter Security


Listing 6-11<     > Listing 6-13


This listing can be compiled with the command line:
csc.exe /target:exe Example_6_12.cs
Errors: 0 Warnings: 0


Example_6_12.cs
using System.Runtime.InteropServices;
using System.Security.Principal;
class Program{
   [DllImport("Advapi32.Dll")]
   static extern bool LogonUser(
      string   sUserName,
      string   sDomain,
      string   sUserPassword,
      uint   dwLogonType,
      uint   dwLogonProvider,
      out   System.IntPtr token);
   [DllImport("Kernel32.Dll")]
   static extern void CloseHandle( System.IntPtr token );

   static void Main(){
      WindowsIdentity id1 = WindowsIdentity.GetCurrent();
      System.Console.WriteLine( "Before impersonating : " + id1.Name);
      System.IntPtr pToken;
      if( LogonUser(
            "guest" ,     // login
            string.Empty, // Windows domain
            "guest_pwd" // password
            2,            // LOGON32_LOGON_INTERACTIVE
            0,            // LOGON32_PROVIDER_DEFAUT
            out pToken) ) {
         WindowsIdentity.Impersonate( pToken );
         WindowsIdentity id2 = WindowsIdentity.GetCurrent();
         System.Console.WriteLine( "After impersonating  : " + id2.Name );
         // Here, the underlying Windows thread ...
         // ... has the 'guest' identity. 
         CloseHandle( pToken );
      }
   }
}	
Copyright Patrick Smacchia 2006 2007