C# 采用DirectoryEntry管理window 账号

本文介绍了一种使用WSS实现在线办公系统(OA)中账号查询、组查询、密码修改等基本功能的方法,通过操作DirectoryEntry进行Windows账号管理。

最近用wss做oa,头疼的事情是wss没有自行修改密码、增加用户等功能,所以做了一个简单的,主要实现了
1.账号查询;
2.组查询;
3.密码修改(修改当前登录的密码);
4.创建账号(未完成);
注意:不是AD,是window账号管理,具体代码很简单,就不多描述了,主要是Member.cs类;

用vs2008 sp1直接打开,两个入口页面 :
1.Members/Find.aspx 查找窗口,可以搜索账号和搜索组,可以查看账号和组信息,根据组查账号,根据账号查所属组
2.UserChangePassword.aspx是修改当前登录账户的的密码;
3.UserAdd.aspx 新增账号因为还不是很急着用,还没有实现完;

用c#实现,关键是操作DirectoryEntry

网站代码下载

WPF 第一次进入登陆windows时点击login按钮,会报错,m_Service似乎并没有被initial,如何修改代码 public ClientLoginWindow() { InitializeComponent(); Init_tReflashList(); } private void Init_tReflashList() { string sHostIP = ConfigurationManager.AppSettings["HostIP"].ToString(); string sHostPort = ConfigurationManager.AppSettings["HostPort"].ToString(); m_Service = new ServiceClient(sHostIP, sHostPort); } private void BtnLogin_Click(object sender, RoutedEventArgs e) { string username = txtusername.Text; string password = txtPassword.Password; string filter = $"sAMAccountName={username}"; try { if (m_Service == null) { Init_tReflashList(); } if (m_Service.IsHostChannelReadyAsync(DateTime.UtcNow.AddSeconds(1))) { using (DirectoryEntry entry = new DirectoryEntry(ldapUrl, username, password)) { object nativeObject = entry.NativeObject; DirectorySearcher searcher = new DirectorySearcher(entry); searcher.Filter = filter; SearchResult result = searcher.FindOne(); byte[] thumbnailPhoto = result.Properties["thumbnailPhoto"][0] as byte[]; string adNumber = result.Properties["description"][0] as string; msgUsers objInfo = m_Service.GetUserInfos(adNumber); string departmentFullName = result.Properties["department"][0] as string; string department = departmentFullName.Substring(0, departmentFullName.LastIndexOf(' ') + 1).TrimEnd(); if (result == null) { System.Windows.MessageBox.Show("用户名或密码错误!"); } else { if (objInfo.Users.Count < 1) { System.Windows.MessageBox.Show("找不到账号,请联系管理员!"); } else { MonitorWindow mainForm = new MonitorWindow() { UserDepartment = department }; this.Hide(); mainForm.Show(); logtext = $"登陆成功,所在:" + department; fintext = $"{DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")}|{username}|{logtext}|{m_Title}"; var response = m_amhsService.InsertLogDatas(fintext); } } } } } catch (Exception ex) { System.Windows.MessageBox.Show($"登录失败:{ex.Message}"); logtext = $"登录失败原因:\n" + ex.Message; fintext = $"{DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")}|{UserID}|{logtext}|{m_Title}"; var response = m_amhsService.InsertLogDatas(fintext); } }
最新发布
07-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值