Posts Tagged Children
Create Computer Account in Active Directory and add it to Domain with C#
Posted by Kelly's Chronicles in .NET, C#, Computers and Internet on July 10, 2014
I was asked to convert this code from my original post to C# by a friend who obviously didn’t want to do it himself. There was one conversion issue along the way I also fixed which is why I suspect he didn’t convert it himself. In other news, my assimilation into Memphis, TN is going well. I am slowly becoming accustomed to the heat and humidity and am trying to fight off the urge to eat everything in sight because the food is just amazing if a tad bit unhealthy. I finally am getting my car fixed and am looking forward to getting out and seeing this town for myself. Let’s hope it will be a lot of fun. Ok back to what you came here for. Here you go…..
DirectoryEntry Entry = new DirectoryEntry(“LDAP://” + ActiveDirectoryTree.SelectedNode.Name, strDomain + “\\” + strUser, strPass, AuthenticationTypes.Secure);
string ComputerName = null;
string CompSystem = null;
int ComputerCount = ComputerList.Items.Count;
int i = 0;
for (i = 0; i <= ComputerCount – 1; i++)
{
CompSystem = ComputerList.Items(i).Text;
DirectoryEntry ComputerEntry = Entry.Children.Add(“CN=” + CompSystem + “”, “Computer”);
ComputerEntry.Properties(“sAMAccountName”).Value = “” + CompSystem + “”;
ComputerEntry.CommitChanges();
int exp = Convert.ToInt32(ComputerEntry.Properties(“UserAccountControl”).Value);
ComputerEntry.Properties(“UserAccountControl”).Value = exp | 0x1;
ComputerEntry.CommitChanges();
int val = Convert.ToInt32(ComputerEntry.Properties(“UserAccountControl”).Value);
ComputerEntry.Properties(“UserAccountControl”).Value = val & ~0x2;
ComputerEntry.CommitChanges();
ComputersCreated.Text = ComputersCreated.Text + CompSystem + Environment.NewLine;
ComputerEntry.Close();
ComputerEntry.Dispose();
}
ComputersCreated.Text = ComputersCreated.Text + “——————————” + Environment.NewLine;
Entry.Close();
Entry.Dispose();
and to add to the domain:
string[] args = new string[5];
string[] args2 = new string[3];
// The one difference from the vb.net version. Commented this declaration since looping variables in ‘foreach’
//loops are declared in the ‘foreach’ header in C#:
// ManagementObject comp = null;
ManagementObjectCollection comps = null;
ManagementClass clsComps = new ManagementClass(“Win32_ComputerSystem”);
comps = clsComps.GetInstances();
foreach (ManagementObject comp in comps)
{
// this == used to join the domain
args[0] = “DOMAIN to join”;
args[1] = “Password”;
args[2] = “User with domain privs”;
args[3] = “Specify OU Here (ou=test,dc=domain,dc=com)”;
args[4] = “1”;
UInt32 retVal = 0;
retVal = comp.InvokeMethod(“JoinDomainOrWorkgroup”, args);
retval2 = Convert.ToString(retVal);
if (retval2 == “0”)
{
MessageBox.Show(“Welcome to the domain”);
Close();
}
else
{
End If
}
.NET, Account, Active, ActiveDirectoryTree, assimilation, AuthenticationTypes, c#, Children, Close, clsComps, CommitChanges, CompSystem, computer, ComputerCount, ComputerEntry, ComputerList, ComputerName, Convert, Count, Create, declaration, difference, Directory, DirectoryEntry, Dispose, Domain, Entry, environment, Facebook, food, foreach, friend, GetInstances, header, Here, InvokeMethod, items, Join, JoinDomainOrWorkgroup, LDAP, ManagementClass, ManagementObject, ManagementObjectCollection, Memphis, MessageBox, Name, NewLine, news, Password, properties, retVal, Secure, SelectedNode, Specify, Text, user, UserAccountControl, Value, vb.net, version, Welcome
Archives
- April 2018
- January 2018
- December 2017
- June 2017
- May 2017
- May 2016
- April 2016
- September 2015
- July 2014
- June 2014
- November 2012
- October 2012
- June 2012
- May 2012
- April 2012
- January 2012
- September 2011
- August 2011
- July 2011
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- August 2008
- July 2008
- June 2008
- May 2008
Recent Comments