DEMO程序连接到域控服务器( C#开发AD域控自动工具之二)_c# 操作域控 建立连接-程序员宅基地

技术标签: C# 开发 AD域控管理工具  # C#开发AD域控自动工具  

搭建一个开发环境( C#开发AD域控自动工具之一)

DEMO程序连接到域控服务器( C#开发AD域控自动工具之二)

DEMO程序 创建一个用户( C#开发AD域控自动工具之三)

第一个需求,登陆名称绑定计算机名( C#开发AD域控自动工具之四)

流程集成的一个小例子( 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域服务器连接成功。

 

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ot512csdn/article/details/89203590

智能推荐

如何在P4中管理Unreal Engine 代码-程序员宅基地

文章浏览阅读2.1k次。准备引擎开发环境下载代码Unreal Engine代码库在Github上,要下载Github上的源代码,需要具有Github账号和虚幻引擎的订阅账号,并且将二者相关联。步骤如下。登陆www.github.com使用虚幻引擎订阅账号登陆unrealengine.com点击CONNECTIONS菜单-> ACCOUNTS->GITHUB一路按照提示操作,最终会收到一个Github的通知邮件,邀请参加EpicGames Organization。点击链接,就可以看到源

SpringBoot基于数据库的定时任务实现_spring定时任务本地日志只有一条插入语句,但是数据库有多条-程序员宅基地

文章浏览阅读410次。在我们平时开发的项目中,定时任务基本属于必不可少的功能,那大家都是怎么做的呢?但我知道的大多都是静态定时任务实现。基于注解来创建定时任务非常简单,只需几行代码便可完成。实现如下:[Java]纯文本查看复制代码? 01 02 03 04 05 06 07 08 09 10 11 ..._spring定时任务本地日志只有一条插入语句,但是数据库有多条

常见的Java错误以及规避方法-程序员宅基地

文章浏览阅读1.7k次,点赞3次,收藏4次。1. “Cannot Find Symbol”这是一个非常常见的问题,因为Java中的所有标识符都需要在使用之前进行声明。出现这个错误是因为,在编译代码时,编译器不明白该标识符的含义。![在这里插入图片描述](https://img-blog.csdnimg.cn/20201107220714255.png#pic_center2. “Public Class XXX Should Be in File”当XXX类和Java程序文件名不匹配时,就会产生“public class XXX should

LOJ2540 「PKUWC2018」随机算法(状态压缩)_pkuwc2018 状态压缩-程序员宅基地

文章浏览阅读138次。传送门:https://loj.ac/problem/2540solutionsolutionsolution:直接状压dpdpdp做fs,if_{s,i}fs,i​表示独立集的状态为sss,考虑到排列的第iii位枚举下一位转移考虑下一位可以填什么考虑现在可以加入独立集的点,之前肯定没考虑过,直接转移到fs∪x,i+1f_{s∪{x},i+1}fs∪x,i+1​不可以加入独立集的点..._pkuwc2018 状态压缩

快速搭建一个网关服务,动态路由、鉴权的流程,看完秒会(含流程图)-程序员宅基地

文章浏览阅读150次。点击上方蓝色字体,选择“标星公众号”优质文章,第一时间送达前言本文记录一下我是如何使用Gateway搭建网关服务及实现动态路由的,帮助大家学习如何快速搭建一个网关服务,了解路由相关配置,鉴权的流程及业务处理,有兴趣的一定看到最后,非常适合没接触过网关服务的同学当作入门教程。搭建服务框架SpringBoot 2.1<parent><groupId&...

看懂这篇文章就够了!什么是Redis缓存雪崩、缓存穿透和缓存击穿?五分钟统统搞定-程序员宅基地

文章浏览阅读462次。前言今天的分享主要是讲下这个 redis,什么是缓存雪崩、穿透和击穿。这三个技术问题是我们平时开发工作中和面试过程中,必须要会的知识点,因为目前的互联网系统没有几个不需要用到缓存的,只要用到缓存的话,就需要掌握这三个技术问题。基本上无论哪个老哥去大厂面试,都会被问题这几个问题,所以作为一个互联网开发程序员来说,这个几个技术问题大家是需要搞懂的。而解决这几个问题的方案,通常有布隆过滤器,还有分布式锁。布隆过滤器是1970年的一项技术,距今也有50年了,之所以能够应用至今,说明这项技术还是挺优秀的,

随便推点

生信分析--入门实践一条龙的CWL中文教程_生信分析入门教程csdn-程序员宅基地

文章浏览阅读2.3k次。生信分析--入门实践一条龙的CWL中文教程。关于下载安装所有中文教程,开始学习吧_生信分析入门教程csdn

JavaScript的学习4——面向对象编程_编写一个函数来创建xiaoming:-程序员宅基地

文章浏览阅读177次。前言JavaScript不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程。Object.create()方法可以传入一个原型对象,并创建一个基于该原型的新对象,但是新对象什么属性都没有,因此,我们可以编写一个函数来创建xiaoming:// 原型对象:var Student = { name: 'Robot', height: 1.2, run: function () { console.log(this.name + ' is r_编写一个函数来创建xiaoming:

前端:webpack-程序员宅基地

文章浏览阅读39次。前端相关基础知识webpackwebpack1.1 什么是webpack1.2 webpack安装安装webpackvue脚手架webpack1.1 什么是webpackwebpack 是一个现代 JavaScript 应用程序的模块打包器(module bundler),分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Sass,TypeScript等),并将其转换和打包为合适的格式供浏览器使用。1.2 webpack安装注意:请先安装node环境we

Kryo序列化实现源码分析_python kryo 实现-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏2次。在使用Kryo序列化之前需要将被序列化的类通过register()方法注册到其中去。在register的过程中,实则是要根据要序列化的类生成对应的Registration,Registration中记录了类的唯一id与对应的序列化类,在Kryo中,默认的序列化对象是FieldSerializer,没有特别指明的,都将以FieldSerializer来进行序列化。public Regist..._python kryo 实现

最全面的AndroidStudio配置指南总结-包括护眼模式-程序员宅基地

文章浏览阅读3.7k次。使用AndroidStudio开发APP已有半年多的时间了,从刚开始的不习惯到慢慢适应再到逐渐喜欢上AndroidStudio,中间的过程颇有一番曲折,现在把自己对AndroidStudio的配置心得总结下来,分享给大家,希望给后来人带来方便。强迫症童鞋的护眼模式设置方法传统模式的编辑域护眼模式的编辑域设置保护视力颜色 #C7EDCC(护眼绿)

【批处理DOS-CMD命令-汇总和小结】-跳转、循环、条件命令(goto、errorlevel、if、for[读取、切分、提取字符串]、)cmd命令错误汇总,cmd错误_cmd errorlevel-程序员宅基地

文章浏览阅读4k次,点赞5次,收藏28次。此文主要研究对代码分支化执行和重复利用的实现。分支化执行指根据中途的实际执行结果决定下一步执行的代码,跳转的代码行号;分支化执行大概分为跳转执行、条件判断执行;因此,分支化执行基本是只执行部分代码,部分代码不执行。代码重复利用的实现,一方面依赖程序调用(详见本人写的CMD命令实现程序调用一文),另一方面基于循环命令。打印goto命令的帮助信息。我们可以看到该命令的参数只有一个label。具体应用方法——在goto命令的下方放一行,开头是英文冒号后边紧跟“分支标识符”,然后再goto所在行后面加上“分支标识符_cmd errorlevel