.net程序实现给机器加域,添加域账号到本地管理员

时间:2022-09-23 00:26:25

以下.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. 几款Z2760平板对比

    现阶段的Windows平板本质上分为Windows RT系统平板和完整的Windows 8系统平板两大阵营.RT系统的平板轻薄续航持久,但是由于没法安装常规的.exe程序,所以对于工作需要略显不足,是 ...

  2. 跟visual studio 集成的git插件

    目前有三个,git extension,微软的 visual studio tools for git extension,还有git source control provider 经测试,最好用的 ...

  3. DOM操作优化

    文档对象模型(DOM)是一个独立 于特定语言的应用程序接口.在浏览器中,DOM接口是以JavaScript语言实现的,通过JavaScript来操作浏览器页面中的元素,这使得 DOM成为了JavaSc ...

  4. 【C#进阶系列】00 序

    老早就被各种推荐<CLR via C#>这本书了,然而一直没去学. 因为工作中所需要的.NET功底目前算是足以应付了,而前端却不熟,所以跑去学了一段时间前端的知识. 终于算是把前端方面的基 ...

  5. android 数据文件存取至储存卡

    来自:http://blog.csdn.net/jianghuiquan/article/details/8569233 <?xml version="1.0" encodi ...

  6. django字段设置null和blank的区别

    null 这个选项跟数据库有关. null=True的话,数据库中该字段是NULL,即允许空值:null=False(默认)的话,数据库中该字段是NOT NULL,即不允许空值. blank 这个选项 ...

  7. &lbrack;转&rsqb;-用Gradle 构建你的android程序

    出处:http://www.cnblogs.com/youxilua  前言 android gradle 的插件终于把混淆代码的task集成进去了,加上最近,android studio 用的是gr ...

  8. c time&lowbar;t 和 oc NSDate 的转换

    c time_t 和 oc NSDate 的转换 1:time_t 转 oc NSDate time_t some_time_t=NULL; NSDate *someDate = [NSDate da ...

  9. flex 4 写皮肤

    皮肤容器:s:SparkSkin 主机组件:  [HostComponent("spark.components.Panel")] 绘制: <s:Group left=&qu ...

  10. Python用Pillow&lpar;PIL&rpar;进行简单的图像操作

    Python用Pillow(PIL)进行简单的图像操作 颜色与RGBA值 计算机通常将图像表示为RGB值,或者再加上alpha值(通透度,透明度),称为RGBA值.在Pillow中,RGBA的值表示为 ...