<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      .net 常識 impersonate user 模擬用戶

      在.net中 程序運行的時候的權限一般等于運行這個程序的帳號的權限

      例如asp.net一般是 network service

      console一般是當前用戶

      計劃任務中也可以指定用什么帳號運行當前的程序

      asp.net中也可以在web.config中指定用什么帳號運行當前程序

      本文介紹了如果在你知道用戶名,或者是用戶名和密碼的情況下 使用特定的帳號密碼執行特定的代碼,這樣你在運行時就可以切換當前程序的帳號和權限以完成特定的目標

        1.遠程操作不同的機器需要不同的權限 (如果沒有AD的話)

        2.將程序切換到其他AD去

        3.利用已知的帳號和密碼,在運行時提高權限

      實現方式1,只知道帳號不知道密碼,(這種執行方式是受限的,不完全的模擬)

      以下代碼修改了線程本身的principal,就是執行線程的代理用戶

      private static void SetThreadPrincipal(string loginId)
      {
      string[] roles = Roles.GetRolesForUser(loginId);
      System.Security.Principal.IIdentity userIdentity
      = new System.Security.Principal.GenericIdentity(loginId);
      System.Security.Principal.IPrincipal userPrincipal
      = new System.Security.Principal.GenericPrincipal(userIdentity, roles);
      Thread.CurrentPrincipal
      = userPrincipal;
      }

      實現方式2 知道帳號密碼和域(直接用新的帳號密碼登錄執行新的操作)

      參考以下代碼....有點長

      public static bool ImpersonateValidUser(String userName, String domain, String password)
      {
      //ServiceContext.SetThreadPrincipal();
      WindowsImpersonationContext impersonationContext;

      WindowsIdentity tempWindowsIdentity;
      IntPtr token
      = IntPtr.Zero;
      IntPtr tokenDuplicate
      = IntPtr.Zero;

      if (RevertToSelf())
      {
      if (LogonUserA(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();
      if (impersonationContext != null)
      {
      CloseHandle(token);
      CloseHandle(tokenDuplicate);
      return true;
      }
      }
      }
      }
      if (token != IntPtr.Zero)
      CloseHandle(token);
      if (tokenDuplicate != IntPtr.Zero)
      CloseHandle(tokenDuplicate);
      return false;
      }


      #region win32 api extend method
      [DllImport(
      "advapi32.dll")]
      static extern int LogonUserA(String lpszUserName,
      String lpszDomain,
      String lpszPassword,
      int dwLogonType,
      int dwLogonProvider,
      ref IntPtr phToken);
      [DllImport(
      "advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
      static extern int DuplicateToken(IntPtr hToken,
      int impersonationLevel,
      ref IntPtr hNewToken);

      [DllImport(
      "advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
      static extern bool RevertToSelf();

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

      const int LOGON32_LOGON_INTERACTIVE = 2;
      const int LOGON32_PROVIDER_DEFAULT = 0;
      #endregion

      BTW 1:如果想修改整個程序的Principal 一般我們只要調用AppDomain.CurrentDomain.SetPrincipal  就可以了  (大部分.net程序都只有一個域)

      BTW 2:另外由于修改了當前的principal,也就是說你換了一個帳號執行當前代碼,一般情況下執行完操作以后要記得換回原來的帳號...(不同帳號對應不同操作的情況)

      WindowsIdentity WindowsIdentity_1024 = WindowsIdentity.GetCurrent();
      try
      {
      //......operation
      }
      finally
      {
      if(WindowsIdentity_1024!=null)
      WindowsIdentity_1024.Impersonate();
      }

      posted on 2011-04-05 16:16  聽說讀寫  閱讀(1078)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 久久久久无码精品国产h动漫| 神马久久亚洲一区 二区| 欧美日韩视频综合一区无弹窗| 国产精品疯狂输出jk草莓视频| 欧美 亚洲 中文 国产 综合| 日本高清不卡一区二区三| 亚洲国产精品人人做人人爱| 人成午夜免费大片| 国产偷国产偷亚洲高清午夜| 中文字幕人妻无码一区二区三区 | 精品国产一区二区三区av性色| 国产超碰无码最新上传| 精品一区二区成人码动漫| 久久人人97超碰爱香蕉| 日韩丝袜人妻中文字幕| 国产精品午夜福利免费看| 日产无人区一线二码三码2021| 丹阳市| 亚洲国产综合性亚洲综合性| 国产精品亚洲综合久久小说| 国产精品亚洲一区二区z| 国产乱码精品一区二三区| 昔阳县| 亚洲高清国产拍精品熟女| 欧洲码亚洲码的区别入口| 无码精品人妻一区二区三区中| 老司机亚洲精品一区二区| 久久精品国产福利一区二区| 日韩中文字幕精品人妻| 精品人妻一区二区三区蜜臀| 国产成人a∨激情视频厨房| 丰满老熟妇好大bbbbb| 久久精品国产99国产精品严洲| 人人妻人人爽人人添夜夜欢视频 | 成人网站免费观看永久视频下载| 日韩有码国产精品一区| 美女自卫慰黄网站| 中文字幕在线日韩一区| 久久久久久久久毛片精品| 国产色无码专区在线观看| 欧洲一区二区中文字幕|