技术标签: C# 开发 AD域控管理工具 # C#开发AD域控自动工具
DEMO程序连接到域控服务器( C#开发AD域控自动工具之二)
DEMO程序 创建一个用户( C#开发AD域控自动工具之三)
第一个需求,登陆名称绑定计算机名( C#开发AD域控自动工具之四)
对用户按条件添加一个工作站的绑定( C#开发AD域控自动工具之六)
开发环境:VS2017 .net framework 4.7.2
域控服务器:WIN2008R2 SERVER
打开VS2017,新建一个WINFORM项目。
我们放上一个TAB控件,把2个页签改成:用户、组织OU
在“用户”页签,我们放一个toolstripContainer,在容器中再放入SplitContainer,然后上面放一个工具栏,下面放一个状态栏。
左边放一个listbox用来显示日志文本,右边放一堆demo按钮。
登陆域控服务器的用户、密码等等参数,我放到WINFORM自己带的config文件中:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<appSettings>
<add key ="AD_admin" value="administrator"></add>
<add key ="AD_password" value="Test123456789"></add>
<add key ="AD_LDAP" value="LDAP://192.168.155.250"></add>
<add key ="AD_DC1" value="adserv"></add>
<add key ="AD_DC2" value="com"></add>
</appSettings>
</configuration>
要用系统功能来读App.config文件,我们要添加一个系统的引用:
我们还要在头文件声明一下引用:
程序加载的时候,我们把域控的参数,都放到全局变量中:
我们还需要引用一个系统的类库来操作AD:System.DirectoryServices,引用方法同上面的使用config功能一样。
为了能够去修改用户的密码,在后面我们还要作第三个引用,后面遇到再写。
然后我们作一个函数去连接域控服务器:
private void IsConnected(string domainName, string userName, string userPwd)
{
try
{
DirectoryEntry domain = new DirectoryEntry();
domain.Path = domainName;
domain.Username = userName;
domain.Password = userPwd;
domain.AuthenticationType = AuthenticationTypes.Secure;
domain.RefreshCache();
ps(listBox1, "AD服务器连接成功");
}
catch (Exception ex)
{
ps(listBox1, ex.Message);
}
}
public void ps(ListBox box, string s)
{
String line = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s;
box.Items.Add(line);
}
好了,我们把这个函数放到按钮中,运行一下,程序卡住了。
原来,AD域控服务器虚拟机还没有开起来,把域控服务器打开。
再点一下按钮,OK,AD域服务器连接成功。
文章目录6.16.16.16.26.16.46.16.56.16.66.16.76.16.86.16.96.16.106.16.116.16.126.16.136.16.146.16.156.16.166.16.176.16.186.16.1/*****编写一个程序,创建一个包含26个元素的数组,并在其中存储26个小写字母。***然后打印数组的所有内容。**/#include <...
2)渲染引擎负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。(2)需要注意的是`data-`之后的以连字符分割的多个单词组成的属性,获取的时候使用驼峰风格。(1)`data-`为前端开发者提供自定义的属性,这些属性集可以通过对象的`dataset`属性获取,不支持该属性的浏览器可以通过`getAttribute`方法获取。......
引言 IP协议的设计目标是为跨越不同类型的物理网络的分组交换提供互操作,这就需要网络层软件使用的地址(IP)和底层硬件使用的地址之间进行转换,网络接口硬件通常有一个主要的硬件地址(例如以太网的802.11无线接口的48位地址)。由硬件交换的数据帧必须通过正确的硬件接口,否则将无法进行数据传输。 此外,网络地址(IPv4 32bit | IPv6 128bit)和硬..._地址解析协议arp,主机通过它可以动态地发现对应于一个
题目链接Problem DescriptionThere is going to be a party to celebrate the 80-th Anniversary of the Ural State University. The University has a hierarchical structure of employees. It means that the sup..._party 树
在多平台开发,换行符一直很纠结的问题。风来了.fox统一设置 成linux风格提交时转换为LF,检出时不转换git config --global core.autocrlf input拒绝提交包含混合换行符的文件git config --global core.safecrlf true
如图所示的要求。我选择的是第一个,正好练习练习sqlalchemy.在此之前,你需要自行安装sqlalchemy相关库。1.增创造一个Session实例,之后调用add(Emp实例)Session_class = sessionmaker(bind=engine)Session = Session_class()emp_obj = Emp(id=id, name=name, age=..._sqlalchemy封装
一直以来,经常弄不成功关于网址的问题。今天查了下资料首先,找到你的文件:C:\Windows\System32\drivers\etc的hosts文件,直接用记事本打开如上图显示的,你可以在下边加上你的ip和网址名称,记住,不要加#号 ,#号为注释的意思。然后假如你想要网址栏只显示你加的网址,端口设置为80;若网址想要多用,修改端口即可。网址栏显示为:www.xxx.com_iis 配置 主机名
99.View the Exhibit and examine the steps that you executed to create a database resource plan.Subsequently, you execute the following procedure which results in an error:SQL> EXECUTE dbms_res_view the exhibit and examine the steps that you executed to create a database resource plan. subsequ
(1)选择第k个大的数该问题就是找出排序中排名第k的数,其实是一种
什么是动态规划先来看一个例子_动态规划算法重要吗
原博文:minfanphd任务计划第31天:整数矩阵及其运算第31天:整数矩阵及其运算有关矩阵在1到10天的时候就已经接触过了,本次的工作量主要是将矩阵的一些运算给加进去了。在java中this()代表的是调用无参构造函数,若括号里有值则调用的是相应的构造函数。package matrix;import java.util.Arrays;/** * @description: * @author: Qing Zhang * @time: 2021/6/11 */public_java代码300行
获取部分行当数据量过大时,在一页中查看数据是一件非常麻烦的事情语法select * from 表名limit start,count从start开始,获取count条数据start索引从0开始示例:分页已知:每页显示m条数据,当前显示第n页求总页数:此段逻辑后面会在python中实现查询总条数p1使用p1除以m得到p2如果整除则p2为总数页如果不整除则p2+1为总页数求第n页的数据select...