AD域 根据 用户属性userAccountControl 来判断用户禁用属性
参考:https://support.microsoft.com/zh-cn/help/305144/how-to-use-the-useraccountcontrol-flags-to-manipulate-user-account-pro
(如何使用 UserAccountControl 标志操纵用户帐户属性)
因为2是 用户禁用属性,只要用户禁用了,UserAccountControl 的属性值就加了2了
那么2数值这么小,怎么判断用户确实被禁用了呢
之前看到博客说等于UserAccountControl 属性值等于514的,
我原来也这么写的,但这个很片面,很少、我很傻很天真。
string userAcc = subEntry.Properties["userAccountControl"].Value.ToString();
if (userAcc == "")
{
isDelete = "Y";
}
就比如说UserAccountControl 属性值等于66082就是禁用的用户,算个算数
66082-65536(用户密码永不过期)=546
645-512(典型用户的默认帐户类型)=34
34-32(不需要密码)=2
哇,里面含有2,是禁用的,完美
现在要写个算法,算UserAccountControl 属性值包含2。思路清晰明确。
一下贴上我简陋的function:
/// <summary>
/// 根据AD域的userAccountControl属性判断用户是否禁用
/// </summary>
/// <param name="userAccContr"></param>
/// <returns>是否禁用</returns>
private bool GetUserDelete(int userAccContr)
{
if (userAccContr >= ) //TRUSTED_TO_AUTH_FOR_DELEGATION - 允许该帐户进行委派
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //PASSWORD_EXPIRED - (Windows 2000/Windows Server 2003) 用户的密码已过期
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //DONT_REQ_PREAUTH
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //USE_DES_KEY_ONLY - (Windows 2000/Windows Server 2003) 将此用户限制为仅使用数据加密标准 (DES) 加密类型的密钥
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //NOT_DELEGATED - 设置此标志后,即使将服务帐户设置为信任其进行 Kerberos 委派,也不会将用户的安全上下文委派给该服务
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //TRUSTED_FOR_DELEGATION - 设置此标志后,将信任运行服务的服务帐户(用户或计算机帐户)进行 Kerberos 委派。任何此类服务都可模拟请求该服务的客户端。若要允许服务进行 Kerberos 委派,必须在服务帐户的 userAccountControl 属性上设置此标志
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //SMARTCARD_REQUIRED - 设置此标志后,将强制用户使用智能卡登录
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //MNS_LOGON_ACCOUNT - 这是 MNS 登录帐户
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //DONT_EXPIRE_PASSWORD-密码永不过期
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //MNS_LOGON_ACCOUNT - 这是 MNS 登录帐户
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //SERVER_TRUST_ACCOUNT - 这是属于该域的域控制器的计算机帐户
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //WORKSTATION_TRUST_ACCOUNT - 这是运行 Microsoft Windows NT 4.0 Workstation、Microsoft Windows NT 4.0 Server、Microsoft Windows 2000 Professional 或 Windows 2000 Server 并且属于该域的计算机的计算机帐户
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //INTERDOMAIN_TRUST_ACCOUNT - 对于信任其他域的系统域,此属性允许信任该系统域的帐户
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //NORMAL_ACCOUNT - 这是表示典型用户的默认帐户类型
{
userAccContr = userAccContr - ;
} if (userAccContr >= ) //TEMP_DUPLICATE_ACCOUNT - 此帐户属于其主帐户位于另一个域中的用户。此帐户为用户提供访问该域的权限,但不提供访问信任该域的任何域的权限。有时将这种帐户称为“本地用户帐户”
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //ENCRYPTED_TEXT_PASSWORD_ALLOWED - 用户可以发送加密的密码
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //PASSWD_CANT_CHANGE - 用户不能更改密码。可以读取此标志,但不能直接设置它
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //PASSWD_NOTREQD - 不需要密码
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //LOCKOUT
{
userAccContr = userAccContr - ;
}
if (userAccContr >= ) //HOMEDIR_REQUIRED - 需要主文件夹
{
userAccContr = userAccContr - ;
}
//if (userAccContr >= 2) //ACCOUNTDISABLE - 禁用用户帐户
//{
// userAccContr = userAccContr - 2;
//}
//if (userAccContr >= 1) //SCRIPT - 将运行登录脚本
//{
// userAccContr = userAccContr - 1;
//}
if (userAccContr >= )
{
return true;
}
return false;
}
调用部分:
string isDelete = "N";
string userAccContr = subEntry.Properties["userAccountControl"].Value.ToString();
if (!string.IsNullOrEmpty(userAccContr))
{
if (GetUserDelete(int.Parse(userAccContr)))
{
isDelete = "Y";
}
}
OVER,有更好的方法再更新
AD域 根据 用户属性userAccountControl 来判断用户禁用属性的更多相关文章
- AD域-让共享目录只显示用户有权限访问的文件夹
问题: 在AD域中,我们一般都会用到共享,如果有很多部门,我们可能还会按部门.职位配置权限.比如CSD,IT,PA等,但文件夹一多,用户看着就头大,而且用户没权限访问的文件夹误点击进去还会提示无权限访 ...
- C# 关于AD域的操作 (首博)
前段时间(因为懒得找具体的时间了)公司说让系统可以进行对AD域的操作,包括创建用户.于是上网查资料,了解何为AD域.还不知道的这边请https://www.cnblogs.com/cnjavahome ...
- AD域的安装(在Windows Server 2003中安装Active Directory)
在Active Directory中提供了一组服务器作为身份验证服务器或登录服务器,这类服务器被称作域控制器(Domain Controller,简称DC).建立一个AD域的过程实际就是在一台运行Wi ...
- 超链接的禁用属性Disabled了解
可以设置超链接的Disabled属性的true 和 false来确定超链接是不是能点击 例如: <a herf='http://www.baidu.com' onclick='return cl ...
- java修改AD域用户密码使用SSL连接方式
正常情况下,JAVA修改AD域用户属性,只能修改一些普通属性, 如果要修改AD域用户密码和userAccountControl属性就得使用SSL连接的方式修改, SSL连接的方式需要操作以下步骤: 1 ...
- JAVA 通过LDAP获取AD域用户及组织信息
因为工作需求近期做过一个从客户AD域获取数据实现单点登录的功能,在此整理分享. 前提:用户可能有很多系统的情况下,为了方便账号的统一管理使用AD域验证登录,所以不需要我们的系统登录,就需要获取用户的A ...
- AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...
- AD 域服务简介(二)- Java 获取 AD 域用户
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 一.前言 先简单简单回顾上一篇 ...
- gitlab用户登录与AD域用户集成
---恢复内容开始--- 编辑gitlab.rb文件 sudo vi /etc/gitlab/gitlab.rb 下图是我编辑的内容示例(仅供参考): 编辑以下内容: gitlab_rails['ld ...
随机推荐
- CCF CSP 201312-3 最大的矩形
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201312-3 最大的矩形 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i( ...
- python实现获取系统版本和mac信息上传到指定接口
import os,platform,uuid,urllib.parse,urllib.request,json def BeforeSystemRequests(): ''' the systemi ...
- python开发学习-day13(js、jQuery)
s12-20160409-day13 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...
- 【LOJ】#2558. 「LNOI2014」LCA
题解 当年LN还是有专门的省选题的,但是还不如没有 看到这道题,我就想到了一个清晰易懂,简单好写,代码优美的树链剖分线段树套主席树的\(O(q\log^{3}n)\)做法,且就5组数据出题人肯定是不会 ...
- HDU - 4458 计算几何判断点是否在多边形内
思路:将飞机看成不动的,然后枚举时间看点是否在多边形内部. #include<bits/stdc++.h> #define LL long long #define fi first #d ...
- Ionic Js十七:侧栏菜单
一个容器元素包含侧边菜单和主要内容.通过把主要内容区域从一边拖动到另一边,来让左侧或右侧的侧栏菜单进行切换. 效果图如下所示:   用法 要使用侧栏菜单,添加一个父元素,一个中间内容 ,和一个或更 ...
- 牛客练习赛1 C - 圈圈
链接:https://www.nowcoder.com/acm/contest/2/C来源:牛客网 题目描述 shy有一个队列a[1], a[2],…,a[n].现在我们不停地把头上的元素放到尾巴上. ...
- jupyter notebook 小技巧
Converting notebooks to other formats¶ !pip install https://github.com/ipython-contrib/jupyter_contr ...
- 美团外卖iOS App冷启动治理
一.背景 冷启动时长是App性能的重要指标,作为用户体验的第一道“门”,直接决定着用户对App的第一印象.美团外卖iOS客户端从2013年11月开始,历经几十个版本的迭代开发,产品形态不断完善,业务功 ...
- JAVAEE——宜立方商城03:Nginx负载均衡高可用、Keepalived+Nginx实现主备
1 nginx负载均衡高可用 1.1 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务, ...