Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 38755
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T14:45:28+00:00 2026-05-10T14:45:28+00:00

I wrote a simple Windows Forms program in C#. I want to be able

  • 0

I wrote a simple Windows Forms program in C#. I want to be able to input a windows user name and password and when I click a login button to run code run as the user I’ve entered as input.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T14:45:28+00:00Added an answer on May 10, 2026 at 2:45 pm

    You can use the WindowsIdentity.Impersonate method to achieve this. This method allows code to impersonate a different Windows user. Here is a link for more information on this method with a good sample:

    http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.impersonate.aspx

    Complete example:

    // This sample demonstrates the use of the WindowsIdentity class to impersonate a user. // IMPORTANT NOTES: // This sample can be run only on Windows XP.  The default Windows 2000 security policy // prevents this sample from executing properly, and changing the policy to allow // proper execution presents a security risk. // This sample requests the user to enter a password on the console screen. // Because the console window does not support methods allowing the password to be masked, // it will be visible to anyone viewing the screen. // The sample is intended to be executed in a .NET Framework 1.1 environment.  To execute // this code in a 1.0 environment you will need to use a duplicate token in the call to the // WindowsIdentity constructor. See KB article Q319615 for more information.  using System; using System.Runtime.InteropServices; using System.Security.Principal; using System.Security.Permissions; using System.Windows.Forms;  [assembly:SecurityPermissionAttribute(SecurityAction.RequestMinimum, UnmanagedCode=true)] [assembly:PermissionSetAttribute(SecurityAction.RequestMinimum, Name = 'FullTrust')] public class ImpersonationDemo {     [DllImport('advapi32.dll', SetLastError=true, CharSet = CharSet.Unicode)]     public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword,         int dwLogonType, int dwLogonProvider, ref IntPtr phToken);      [DllImport('kernel32.dll', CharSet=System.Runtime.InteropServices.CharSet.Auto)]     private unsafe static extern int FormatMessage(int dwFlags, ref IntPtr lpSource,         int dwMessageId, int dwLanguageId, ref String lpBuffer, int nSize, IntPtr *Arguments);      [DllImport('kernel32.dll', CharSet=CharSet.Auto)]     public extern static bool CloseHandle(IntPtr handle);      [DllImport('advapi32.dll', CharSet=CharSet.Auto, SetLastError=true)]     public extern static bool DuplicateToken(IntPtr ExistingTokenHandle,         int SECURITY_IMPERSONATION_LEVEL, ref IntPtr DuplicateTokenHandle);      // Test harness.     // If you incorporate this code into a DLL, be sure to demand FullTrust.     [PermissionSetAttribute(SecurityAction.Demand, Name = 'FullTrust')]     public static void Main(string[] args)     {         IntPtr tokenHandle = new IntPtr(0);         IntPtr dupeTokenHandle = new IntPtr(0);         try         {             string userName, domainName;             // Get the user token for the specified user, domain, and password using the             // unmanaged LogonUser method.             // The local machine name can be used for the domain name to impersonate a user on this machine.             Console.Write('Enter the name of the domain on which to log on: ');             domainName = Console.ReadLine();              Console.Write('Enter the login of a user on {0} that you wish to impersonate: ', domainName);             userName = Console.ReadLine();              Console.Write('Enter the password for {0}: ', userName);              const int LOGON32_PROVIDER_DEFAULT = 0;             //This parameter causes LogonUser to create a primary token.             const int LOGON32_LOGON_INTERACTIVE = 2;              tokenHandle = IntPtr.Zero;              // Call LogonUser to obtain a handle to an access token.             bool returnValue = LogonUser(userName, domainName, Console.ReadLine(),                 LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,                 ref tokenHandle);              Console.WriteLine('LogonUser called.');              if (false == returnValue)             {                 int ret = Marshal.GetLastWin32Error();                 Console.WriteLine('LogonUser failed with error code : {0}', ret);                 throw new System.ComponentModel.Win32Exception(ret);             }              Console.WriteLine('Did LogonUser Succeed? ' + (returnValue? 'Yes' : 'No'));             Console.WriteLine('Value of Windows NT token: ' + tokenHandle);              // Check the identity.             Console.WriteLine('Before impersonation: '                 + WindowsIdentity.GetCurrent().Name);             // Use the token handle returned by LogonUser.             WindowsIdentity newId = new WindowsIdentity(tokenHandle);             WindowsImpersonationContext impersonatedUser = newId.Impersonate();              // Check the identity.             Console.WriteLine('After impersonation: '                 + WindowsIdentity.GetCurrent().Name);              // Stop impersonating the user.             impersonatedUser.Undo();              // Check the identity.             Console.WriteLine('After Undo: ' + WindowsIdentity.GetCurrent().Name);              // Free the tokens.             if (tokenHandle != IntPtr.Zero)                 CloseHandle(tokenHandle);          }         catch(Exception ex)         {             Console.WriteLine('Exception occurred. ' + ex.Message);         }      } } 
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 76k
  • Answers 76k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • added an answer Under Windows (tested with XP), you can create a .cmd… May 11, 2026 at 3:06 pm
  • added an answer There is a (free) custom 'trash' destination available from a… May 11, 2026 at 3:06 pm
  • added an answer Use NSDatePicker. You can change it to be a Calendar… May 11, 2026 at 3:06 pm

Related Questions

I cannot figure out how to make a C# Windows Form application write to
I am still having problems with figuring out how to create winforms in a
There are several topics about what questions will be raised in an interview for
I want to write Html format, but I can not even get a simple

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.