以下.net代码中共有两个方法。

AddComputerToDomain实现给把本计算机添加到某个域中

AddDomainUserToLocalAdminGroup实现把域中某用户添加到本地管理员

请添加引用System.DirectoryServices,在.NET下

具体代码如下:

using System;
using System.DirectoryServices;
using System.Runtime.InteropServices;
using log4net; namespace ZhengShuangliang
{
class Program
{
static ILog _log=LogManager.GetLogger(typeof(Program)); static void Main(string[] args)
{
string domain = "domainname.com";
string account = "hellodev";
string password = "P@swrd1"; AddComputerToDomain(domain ,account,password); //string addedusername = "zslservices";
//string localgroup = "Administrators";
//AddDomainUserToLocalAdminGroup(domain, addedusername, localgroup); Console.Read();
} public static void AddDomainUserToLocalAdminGroup(string domainname, string username, string localgroup)
{
try
{
string userPath = string.Format("WinNT://{0}/{1},user", domainname, username);
string groupPath = string.Format("WinNT://{0}/{1},group", Environment.MachineName, localgroup);
using (DirectoryEntry group = new DirectoryEntry(groupPath))
{
group.Invoke("Add", userPath);
group.CommitChanges();
}
Console.WriteLine(string.Format(@"Add domain user: {0}\{1} to local group: {2} successed!", domainname,
username, localgroup));
_log.Debug(string.Format(@"Add domain user: {0}\{1} to local group: {2} successed!", domainname,
username, localgroup));
}
catch (System.DirectoryServices.DirectoryServicesCOMException ex)
{
_log.Error("AddToGroup occur Error:", ex);
}
} static void AddComputerToDomain(string domain ,string account,string password)
{
uint result = Join.DomainJoin("", domain, "", account, password);
if (result == )
{
_log.Debug(string.Format("Add to domain: {0} successed!", domain));
Console.WriteLine(string.Format("Add to domain: {0} successed!", domain));
}
else
{
_log.Debug(string.Format("Add to domain: {0} failed!, errorCode:{1}", domain, result));
Console.WriteLine(string.Format("Add to domain: {0} failed!, errorCode:{1}", domain, result));
} Console.Read();
} public class Join
{ [DllImport("netapi32.dll", CharSet = CharSet.Unicode)]
static extern uint NetJoinDomain(
string lpServer,
string lpDomain,
string lpAccountOU,
string lpAccount,
string lpPassword,
JoinOptions NameType); [Flags]
enum JoinOptions
{
NETSETUP_JOIN_DOMAIN = 0x00000001,
NETSETUP_ACCT_CREATE = 0x00000002,
NETSETUP_ACCT_DELETE = 0x00000004,
NETSETUP_WIN9X_UPGRADE = 0x00000010,
NETSETUP_DOMAIN_JOIN_IF_JOINED = 0x00000020,
NETSETUP_JOIN_UNSECURE = 0x00000040,
NETSETUP_MACHINE_PWD_PASSED = 0x00000080,
NETSETUP_DEFER_SPN_SET = 0x10000000
} public static uint DomainJoin(string server, string domain, string OU, string account, string password)
{
try
{
uint value1 = NetJoinDomain(server, domain, OU, account, password, (JoinOptions.NETSETUP_JOIN_DOMAIN | JoinOptions.NETSETUP_DOMAIN_JOIN_IF_JOINED | JoinOptions.NETSETUP_ACCT_CREATE));
if (value1 == )
{
_log.Debug("Go through to 2224, Existing computer account found....");
value1 = NetJoinDomain(null, domain, null, account, password, (JoinOptions.NETSETUP_JOIN_DOMAIN));
}
return value1;
}
catch (Exception e)
{
_log.Error(e);
Console.WriteLine(e.Message);
return ;
}
}
}
}
}

.net程序实现给机器加域,添加域账号到本地管理员的更多相关文章

  1. Office 365 – SharePoint 2013 Online 中添加域和域名

    1.在SharePoint Online管理中心,点击菜单上的添加域,如下图: 2.进入管理域的页面,点击添加域来添加我们自己的域名,如下图: 3.进入“在 Office 365中添加新域”的向导,跟 ...

  2. 一次hadoop集群机器加内存的运维过程

    由于前期的集群规划问题,导致当前Hadoop集群中的硬件并没有完全利用起来.当前机器的内存CPU比例为2G:1core,但一般的MapReduce任务(数据量处理比较大,逻辑较复杂)的MR两端都需要将 ...

  3. 关于无法把程序(Adobe Fireworks CS5)添加到打开方式的解决办法

    关于无法把程序(Adobe Fireworks CS5)添加到打开方式的解决办法 最近换了新版的Adobe Fireworks CS5,发现打开图片文件时在右键“打开方式”里仍然是以前的Firewor ...

  4. 为什么不建议给域名裸域添加CNAME记录

    很多提供权威 DNS 解析的服务商都不提供域名裸域又叫根域(root record)的 CNAME 解析,有些即使提供了也会在你添加裸域的 CNAME 记录时给你一个警告提醒. 万网的权威 DNS 解 ...

  5. Microsoft Dynamics CRM 2011 批量添加域用户 然后添加CRM用户

    一.先了解下 DSADD user命令详解 常见的批量创建用户的方法有四种: 一. 帐户模板的方式 二. CSVDE和LDIFDE 三. 脚本的方式 四. DSADD 但是很少有详细的资料使用DSAD ...

  6. 微信小程序开发动感十足的加载动画--都在这里!

    代码地址如下:http://www.demodashi.com/demo/14242.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  7. BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第14章节--使用Office Services开发应用程序 新的机器翻译服务

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第14章节--使用Office Services开发应用程序  新的机器翻译服务         机器翻译服务也是继Wor ...

  8. 简单的自动化使用--使用selenium实现学习通网站的刷慕课程序。注释空格加代码大概200行不到

    简单的自动化使用--使用selenium实现学习通网站的刷慕课程序.注释空格加代码大概200行不到 相见恨晚啊 github地址 环境Python3.6 + pycharm + chrom浏览器 + ...

  9. 【Matlab】向图像域添加噪声/高斯/均匀/伽马/指数/椒盐

    [向图像域添加噪声] matlab自带一个函数:imnoise,可以对图像添加噪声. Matlab的说明 https://www.mathworks.com/help/images/ref/imnoi ...

随机推荐

  1. cvCvtColor与cvtColor区别

    用到了rgb转灰度图功能,查到两个函数,发现名字很像,功能也一样,但是参数类型不一样. 记录一下. 可以看声明,cvCvtColor是c语言风格接口. /* Converts input array ...

  2. Chapter 3. Video Coding Concepts

    本章主要介绍一些有关视频编码的概念 时域模型(Temporal Model) 时域模型的作用是去除帧间冗余.如:将第二帧减去第一帧,得到的剩余信息,其能量会远小于第二帧本身. 基于块的运动估计和补偿 ...

  3. SequoiaDB版本在线升级介绍说明

    1.前言 在SequoiaDB数据库发展过程中,基本保持每半年对外发行一个正式的Release版本.并且每个新发布的Release版本相对老版本而言,性能方面都有很大的提高,并且数据库也会在新版本中加 ...

  4. C语言之复杂链表的复制(图示详解)

    什么是复杂链表? 复杂链表指的是一个链表有若干个结点,每个结点有一个数据域用于存放数据,还有两个指针域,其中一个指向下一个节点,还有一个随机指向当前复杂链表中的任意一个节点或者是一个空结点.今天我们要 ...

  5. CentOS 下搭建FTP服务器

    vsftpd是Linux下比较著名的FTP服务器,搭建FTP服务器当然首选这个.本文介绍了在CentOS 6 4下安装vsftpd.配置虚拟用户登录FTP的过程.正 vsftpd是Linux下比较著名 ...

  6. SharePoint 2013 安装

    步骤 1:打开提升的 SharePoint 2013 命令行管理程序 选择与您的服务器操作系统对应的过程. 在 Windows Server 2008 R2 中 单击“开始”>“所有程序”> ...

  7. Java面试常考------------------------垃圾收集算法

    对于Java系学生而言,Java虚拟机中的垃圾收集算法是一个很重要的面试考点. 常用的垃圾收集算法主要可划分为以下三类: 1. 标记-清除算法 标记清除算法是一种比较简单的方法,直接标记内存中待回收的 ...

  8. javaweb利用filter拦截请求

    项目上有个小需求,要限制访问者的IP,屏蔽未授权的登录请求.该场景使用过滤器来做再合适不过了. SecurityFilter.java: package com.lichmama.webdemo.fi ...

  9. React周末特训班

    Document #react819_content a { text-decoration: none; color: #ef7b2e; border-bottom: 1px solid #ef7b ...

  10. Mac之OS系统下搭建JavaEE环境 <二> 之Tomcat 的安装配置

    二.Tomcat的安装与配置 1.下载Tomcat 找到Tomcat的官网 百度搜索Tomcat 点击下载即可 下载网址:http://tomcat.apache.org/download-80.cg ...