# Επιστροφή - επιχειρήσεις και κώδικα για την εξατομίκευση των χρηστώνΜSK1 επιχειρήσεις

<datetime class="hidden">2008-10-06T00:00</datetime>

<!-- category -- mostlylucidcouk, Imported, Security, C# -->
Λοιπόν, ίσως το , να είχε ένα ωραίο διάλειμμα ίσως το ... να διατηρήσει για κάποιο κώδικα ίσως το MK2 ίσως αυτό θα σας επιτρέψει ' να εξατομικεύσει το MSC4 να είναι ένας χρήστη ίσως το MC5 να είναι πραγματικά βολικό όταν η MSC6 να αναφέρει για παράδειγμα την MSC7 να προσπαθήσει να κατεβάσει ένα αρχείο σε μια τοποθεσία δικτύου ίσως ο MSC8 να είναι συνήθως η , να μην έχει ιδέα πού βρήκα αυτή τη MSC10 να γνωρίζει αν ήταν εσείς.

```
using System;
using System.Web;
using System.Web.Security;
using System.Security.Principal;
using System.Runtime.InteropServices;

namespace Components.Security
{
    /// 
    /// Summary description for ImpersonateUser.
    /// 
    public class ImpersonateUser
    {
        public const int LOGON32_LOGON_INTERACTIVE = 2;
        public const int LOGON32_PROVIDER_DEFAULT = 0;
        WindowsImpersonationContext impersonationContext;
        [DllImport("advapi32.dll", CharSet = CharSet.Auto)]
            public static extern int LogonUser(    string lpszUserUname,
                                                string lpszDomain,
                                                string lpszPassword,
                                                int dwLogonType,
                                                int dwLogonProvider,
                                                ref IntPtr phToken);
        [DllImport("advapi32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError=true)]
            public extern static int DuplicateToken(IntPtr hToken,
                                                    int impersonationLevel,
                                                    ref IntPtr hNewToken);
        public bool impersonateValidUser(string userName, string domain, string password)
        {
            WindowsIdentity tempWindowsIdentity;
            IntPtr token = IntPtr.Zero;
            IntPtr tokenDuplicate = IntPtr.Zero;
            if(LogonUser(userName, domain, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref token) != 0)
            {
                if(DuplicateToken(token, 2, ref tokenDuplicate) != 0)
                {
                    tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
                    impersonationContext = tempWindowsIdentity.Impersonate();
                    return (impersonationContext != null);                    
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
        public void undoImpersonation()
        {
            impersonationContext.Undo();
        }
        
    }
}
```