您好,欢迎来到 - 67学习网 - http://www.67xuexi.com !

SharePoint2013 以其他用户登录和修改AD域用户密码

摘要:using System;using Microsoft.SharePoint;using Microsoft.SharePoint.WebControls;using System.Security.Principal;using System.DirectoryServices.AccountManagement;namespace SharePointProjectDemo.Layouts.ChangePassword{ public class Impersonator { // Fields private WindowsImpersonationContext ctx = null; // Methods public void BeginImpersonation() { try { if (!WindowsIdentity.GetCurrent().IsSystem)
SharePoint2013 以其他用户登录和修改AD域用户密码,标签:软件使用大全,http://www.67xuexi.com
using System;using Microsoft.SharePoint;using Microsoft.SharePoint.WebControls;
using System.Security.Principal;using System.DirectoryServices.AccountManagement;
namespace SharePointProjectDemo.Layouts.ChangePassword
{    public class Impersonator
    {        // Fields

        private WindowsImpersonationContext ctx = null;        // Methods
        public void BeginImpersonation()
        {            try
            {                if (!WindowsIdentity.GetCurrent().IsSystem)
                {       this.ctx = WindowsIdentity.Impersonate(WindowsIdentity.GetCurrent().Token);   
                 this.IsImpersonated = true;
                }
            }            catch
            {                this.IsImpersonated = false;
            }
        }        public void StopImpersonation()
        {            if (this.ctx != null)
            {                this.ctx.Undo();
            }
        }        // Properties
        public bool IsImpersonated
        {            set;            get;
        }
    }    public partial class ChangePassword : LayoutsPageBase
    {        protected void btnChangePwd_Click(object sender, EventArgs e)
        {            string str = this.txtPass1.Text.Trim();  
          string str2 = this.txtPass2.Text.Trim();  
          string str3 = this.txtOld.Text.Trim(); 
           string str4 = this.txtdomain.Text.Trim();    
        if (string.IsNullOrWhiteSpace(str4))
            {                this.ltMsg.Text = "域不能为空!";
            }            else if (string.IsNullOrWhiteSpace(str3))
            {                this.ltMsg.Text = "旧密码不能为空!";
            }            else if (string.IsNullOrWhiteSpace(str))
            {                this.ltMsg.Text = "新密码不能为空!";
            }            else if (str == str2)
            {                this.ChangeUserPassword(this.txtPass2.Text.Trim(), str3, str4);
            }            else
            {                this.ltMsg.Text = "两次新密码不一致,请检查!";
            }
        }        private void ChangeUserPassword(string NewPwd, string OldPwd, string domain)
        {            try
            {
                Impersonator impersonator = new Impersonator();
                impersonator.BeginImpersonation();    
            using (PrincipalContext context = this.GetPContext(OldPwd, domain))
                {                  
  using (UserPrincipal principal = UserPrincipal.FindByIdentity
(context, IdentityType.SamAccountName, GetLoginName()))
                    {
                        principal.ChangePassword(OldPwd, NewPwd);
                    }
                }                if (impersonator.IsImpersonated)
                {
                    impersonator.StopImpersonation();                    this.ltMsg.Text = "已成功修改密码!";
                }                else
                {                    this.ltMsg.Text = "无法修改您的密码,请联系您的系统管理员!";
                }
            }            catch (Exception exception)
            {                this.ltMsg.Text = exception.Message;
            }
        }        private string GetDomainContainter(string domain)
        {            string str = string.Empty;  
          string[] strArray = domain.Split(new char[] { '.' },
 StringSplitOptions.RemoveEmptyEntries); 
           foreach (string str2 in strArray)
            {
                str = str + "DC=" + str2 + ",";
            }            if (str.Length > 0)
            {
                str = str.Substring(0, str.Length - 1);
            }            return str;
        }        private string GetLoginName()
        {            string username= SPContext.Current.Web.CurrentUser.LoginName.Replace("i:0#.w|", "");
            if(username.EndsWith(@"system"))
            {
                username = username.Replace("system", "sherry");
            }            return username;
        }        private string GetLoginNameDomain()
        {            string[] strArray = GetLoginName().Split(new char[] { '\' },
 StringSplitOptions.RemoveEmptyEntries); 
           if (strArray.Length == 2)
            {                return strArray[0];
            }            return null;
        }        private PrincipalContext GetPContext(string OldPwd, string domain)
        {            return new PrincipalContext(ContextType.Domain, domain, this.GetDomainContainter(domain), 
ContextOptions.Negotiate, this.GetLoginName(), OldPwd);
        }        protected void Page_Load(object sender, EventArgs e)
        {            this.ltMsg.Text = GetLoginName().Replace("i:0#.w|", "");
        }

    }
}

上一页  [1] [2] 


Tag:软件使用软件使用大全电脑教程 - 软件使用

《SharePoint2013 以其他用户登录和修改AD域用户密码》相关文章