zoukankan      html  css  js  c++  java
  • SPS中模拟管理员登陆

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

    ===========================================应用===================================================================
       WindowsImpersonationContext wic 
    = null;
       
    try
       {
        wic 
    = CreateIdentity (Uid,Domain,Pwd).Impersonate();
        
        
    /*do something*/
        
    /*do something*/
       }
       
    catch(Exception ex)
       {
       }
       
    finally
       {
        
    if(wic != null) wic.Undo();
       }
    ===============================================================================================================

      
    #region 虚拟管理员用户
      
    public static WindowsIdentity CreateIdentity(string User, string Domain, string Password)
      {
       
    // The Windows NT user token.
       IntPtr tokenHandle = new IntPtr(0);

       
    const int LOGON32_PROVIDER_DEFAULT = 0;
       
    const int LOGON32_LOGON_NETWORK = 3;

       tokenHandle 
    = IntPtr.Zero;

       
    // Call LogonUser to obtain a handle to an access token.
       bool returnValue = LogonUser(User, Domain, Password, 
        LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT,
        
    ref tokenHandle);

       
    if (false == returnValue)
       {
        
    int ret = Marshal.GetLastWin32Error();
        
    throw new Exception("LogonUser failed with error code: " +  ret);
       }

       System.Diagnostics.Debug.WriteLine(
    "Created user token: " + tokenHandle);

       
    //The WindowsIdentity class makes a new copy of the token.
       
    //It also handles calling CloseHandle for the copy.
       WindowsIdentity id = new WindowsIdentity(tokenHandle);
       CloseHandle(tokenHandle);
       
    return id;
      }
      [DllImport(
    "advapi32.dll", SetLastError=true)]
      
    private static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword,
       
    int dwLogonType, int dwLogonProvider, ref IntPtr phToken);

      [DllImport(
    "kernel32.dll", CharSet=CharSet.Auto)]
      
    private extern static bool CloseHandle(IntPtr handle);

      
    #endregion 虚拟管理员用户

  • 相关阅读:
    通用应用程序设计
    咫尺与天涯
    SQL SERVER 自定义函数 split
    asp.net 页面实践执行顺序
    asp.net UpdatePanel 不能局部刷新问题汇总
    DataGrid GridView 单页javascript 表头排序
    存储过程分页方案
    数据库名、数据表名、字段名、主键、标识列相关查询
    c# web 缓存管理
    js笔记---拖动元素
  • 原文地址:https://www.cnblogs.com/focus/p/629652.html
Copyright © 2011-2022 走看看