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
|