//Check user exist in a group
public static bool IfUserExistInGroup(string username, string groupname)
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "DOMAINNAME");
// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, username);
// find the group in question
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, groupname);
// check if user is member of that group
if (user.IsMemberOf(group))
{
return true;
}
else
return false;
}
//Check if group exist
public static bool ifGroupExist(string groupname)
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain,
"domain",
"admin",
"Password");
GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx,
IdentityType.SamAccountName,
groupname);
if (grp != null)
{
grp.Dispose();
ctx.Dispose();
return true;
}
else
{
ctx.Dispose();
return false;
}
}
//if user exist
public static bool ifUserExist(string username)
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain,
"domain",
"admin",
"password");
UserPrincipal usr = UserPrincipal.FindByIdentity(ctx,
IdentityType.SamAccountName,
username);
if (usr != null)
{
usr.Dispose();
ctx.Dispose();
return true;
}
else
{
ctx.Dispose();
return false;
}
}
//Find if user is administrator
public static bool IsAdministrator()
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
if (null != identity)
{
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
return false;
}
//set home directory
public static string setHomeDir(string username, string homeDir)
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain,
"",
"",
"");
UserPrincipal usr = UserPrincipal.FindByIdentity(ctx,
IdentityType.SamAccountName,
username);
if (usr != null)
{
if (usr.Enabled == false)
usr.Enabled = true;
usr.HomeDirectory = homeDir;
try
{
usr.Save();
}
catch (Exception e)
{
return e.ToString();
}
usr.Dispose();
}
else { return "cant find user"; }
ctx.Dispose();
return ("succssful");
}
//Create user
public static void createUser(string username, string password, string firstname, string surname, string yearlevel, string homegroup)
{
if (ifUserExist(username))
writeToLogs("user:" + username + " already exist", ADUserlogs);
else
{
PrincipalContext pc = new PrincipalContext(ContextType.Domain,
"DomainName",
"AdminName",
"");
UserPrincipal up = new UserPrincipal(pc);
up.SamAccountName = username;
up.HomeDirectory = "\\\\FileServer$\\" + username;
if (!Directory.Exists(up.HomeDirectory))
{
Directory.CreateDirectory(up.HomeDirectory);
AddDirectorySecurity(up.HomeDirectory, username, FileSystemRights.FullControl);
}
up.EmailAddress = username + "@Email.com";
up.SetPassword(password);
up.Enabled = true;
up.ExpirePasswordNow();
up.GivenName = firstname;
up.Surname = surname;
up.DisplayName = firstname + " " + firstname;
up.HomeDrive = "U:";
up.Description = "Year " + yearlevel + " 2014";
try
{
up.Save();
up.Dispose();
pc.Dispose();
}
catch (Exception E)
{
Console.WriteLine(E.ToString());
up.Dispose();
pc.Dispose();
}
writeToLogs("user:" + username + "at yearlevel:" + yearlevel + "successfully created with password:" + password, ADUserlogs);
string studentOU;
if (homegroup != "condition1")
studentOU = "OU1"
else
studentOU = "";
moveOU(getDN(username), studentOU);
}
}
// create ou
public static void createou(string ou, string rootou)
{
string rootOU = rootou;
DirectoryEntry objAD = new DirectoryEntry(rootOU, "i", "");
DirectoryEntry objOU = objAD.Children.Add(ou, "OrganizationalUnit");
objOU.CommitChanges();
}
//Change group scope
public static void changeGroupScope(string s, GroupScope gp)
{
try
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find the group in question
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, s);
group.GroupScope = gp;
group.Save();
}
catch (Exception E)
{
writeToLogs(E.ToString() + " --- when try to make changes on group name: " + s, ADGrouplogs);
}
}
//Remove Directory Security
public static void RemoveDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
{
// Create a new DirectoryInfo object.
DirectoryInfo dInfo = new DirectoryInfo(FileName);
// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity dSecurity = dInfo.GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
Rights,
ControlType));
// Set the new access settings.
dInfo.SetAccessControl(dSecurity);
}
//Add AD security
public static bool AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights)
{
try
{
// Create a new DirectoryInfo object.
DirectoryInfo dInfo = new DirectoryInfo(FileName);
// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity dSecurity = dInfo.GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
dSecurity.ResetAccessRule(new FileSystemAccessRule(Account,
Rights, AccessControlType.Allow));
dSecurity.AddAccessRule(new FileSystemAccessRule(Account,
Rights,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.InheritOnly,
AccessControlType.Allow));
/*
dSecurity.AddAccessRule(new FileSystemAccessRule(Account,
Rights,
ControlType));
*/
// Set the new access settings.
dInfo.SetAccessControl(dSecurity);
return true;
}
catch (Exception E)
{
return false;
}
}
// move OU
public static string moveOU(string userDN, string ou)
{
try
{
DirectoryEntry NewUser = new DirectoryEntry("LDAP://" + userDN);
// Use the MoveTo property to define the new container you want to move the object to.
NewUser.MoveTo(new DirectoryEntry("LDAP://" + ou));
}
catch (Exception e)
{
writeToLogs("when move :" + userDN + " to " + ou + " , this happened" + e.ToString(), ADOUlogs);
}
return ("success");
}
//get Distinguish Name
public static string getDN(string username)
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain,
"",
"",
"Password");
UserPrincipal usr = UserPrincipal.FindByIdentity(ctx,
IdentityType.SamAccountName,
username);
if (usr != null)
{
string temp = usr.DistinguishedName.ToString();
usr.Dispose();
ctx.Dispose();
return temp;
}
else
{
ctx.Dispose();
return "cant find user";
}
}
//add user to a group
public static string AddUserToGroup(string userId, string groupName)
{
if (ifUserExist(userId))
{
if (!IfUserExistInGroup(userId, groupName))
{
try
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find the group in question
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, groupName);
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, userId);
group.Members.Add(user);
group.Save();
group.Dispose();
user.Dispose();
ctx.Dispose();
}
catch (System.DirectoryServices.AccountManagement.PrincipalExistsException)
{
return userId + " is already a member of " + groupName;
}
catch (System.DirectoryServices.DirectoryServicesCOMException E)
{
return E.Message.ToString() + "WHen try to add: " + userId + " to group:" + groupName;
}
return userId + " is successfully added to " + groupName;
}
else
return userId + " is already a member of " + groupName;
}
else
return userId + " is not exist";
}
//empty active directory group
public static string emptyGroup(string groupname)
{
string output = "Empty Group started";
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find the group in question
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, groupname);
// if found....
if (group != null)
{
// iterate over members
foreach (Principal p in group.GetMembers())
{
UserPrincipal theUser = p as UserPrincipal;
if (theUser != null)
{
group.Members.Remove(theUser);
try
{
group.Save();
}
catch (Exception e)
{
output = e.ToString();
}
finally { }
}
}
}
return output;
}
//create active directory group
public static string createGroup(string Path, string name)
{
if (!DirectoryEntry.Exists(Path))
{
try
{
DirectoryEntry entry = new DirectoryEntry(Path);
DirectoryEntry group = entry.Children.Add("CN=" + name, "group");
group.Properties["sAmAccountName"].Value = name;
group.CommitChanges();
return "group: " + name + " has been created ";
}
catch (Exception e)
{
return e.Message.ToString();
}
}
else
{
return emptyGroup(name);
}
}
rockyoz
Sunday, 30 November 2014
C# Active Directory fuctions
C# File System
//Count lines in file
public static int CountLinesInFile(string f)
{
int count = 0;
using (StreamReader r = new StreamReader(f))
{
string line;
while ((line = r.ReadLine()) != null)
{
count++;
}
}
return count;
}
//Create Folder
public static string createDir(string s)
{
try
{
// Determine whether the directory exists.
if (Directory.Exists(s))
{
return ("That path:" + s + " exists already.");
}
// Try to create the directory.
DirectoryInfo di = Directory.CreateDirectory(s);
return ("The directory :" + s + "was created successfully at " + Directory.GetCreationTime(s));
}
catch (Exception e)
{
return ("The process failed: " + e.ToString() + " when create:" + s);
}
finally { }
}
C# run DOS command
public static void LaunchCommandLineApp(string command, string args)
{
// Use ProcessStartInfo class
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = command;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = args;
try
{
// Start the process with the info we specified.
// Call WaitForExit and then the using statement will close.
using (Process exeProcess = Process.Start(startInfo))
{
exeProcess.WaitForExit();
}
}
catch
{
// Log error.
}
}
get date time in YYYYYMMDDHHMMSS format
public static string getDateTime()
{
return (DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString());
}
C# Fix Internet Explorer with wpad proxy
public static void IEFix()
{
foreach (Process proc in Process.GetProcessesByName("iexplore.exe"))
{
proc.Kill();
}
RegistryKey startPageKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Explorer\Main", true);
startPageKey.SetValue("Start Page", "http://");
startPageKey.Close();
RegistryKey startPageKey2 = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", true);
startPageKey2.SetValue("AutoConfigURL", "http:///wpad.dat");
startPageKey2.Close();
Tools.LaunchCommandLineApp("C:\\Program Files\\Internet Explorer\\iexplore.exe", "");
}
C# Get Serial Number
import System.Management;
public static string getSN()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_Processor");
string collectedInfo = ""; // here we will put the informa
searcher.Query = new ObjectQuery("select * from Win32_BIOS");
foreach (ManagementObject share in searcher.Get())
{
//then, the serial number of BIOS
collectedInfo += share.GetPropertyValue("SerialNumber").ToString();
}
return collectedInfo;
}
C# SQL Server Examples
This is for a quick reference whenever I need use some data from SQL server:
1. From SQL to DataTable:
2. From DataTable to String Builder
Reference: http://stackoverflow.com/questions/4959722/c-sharp-datatable-to-csv
1. From SQL to DataTable:
SqlConnection myConnection = new SqlConnection("user id=;" +
"password=;server=;" +
"database=; " +
"connection timeout=30");
myConnection.Open();
SqlCommand command = new SqlCommand("Select xxx from xxx here xxx =xxx order by xxx", myConnection);
// Creates a SqlDataReader instance to read data from the table.
SqlDataReader dataReader = command.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dataReader);
2. From DataTable to String Builder
var sb = new StringBuilder(); string[] columnNames = dt.Columns.Cast3. From DataTable to GridView(). Select(column => column.ColumnName). ToArray(); sb.AppendLine(string.Join(",", columnNames)); foreach (DataRow row in dt.Rows) { string[] fields = row.ItemArray.Select(field => field.ToString()). ToArray(); sb.AppendLine(string.Join(",", fields)); }
this.GridView1.Visible = true; GridView1.DataSource = dt; GridView1.DataBind();4.From DataTable to CSV
StringBuilder sb = new StringBuilder(); string[] columnNames = dt.Columns.Cast(). Select(column => column.ColumnName). ToArray(); sb.AppendLine(string.Join(",", columnNames)); foreach (DataRow row in dt.Rows) { string[] fields = row.ItemArray.Select(field => field.ToString()). ToArray(); sb.AppendLine(string.Join(",", fields)); } File.WriteAllText("test.csv", sb.ToString())
Reference: http://stackoverflow.com/questions/4959722/c-sharp-datatable-to-csv
Subscribe to:
Comments (Atom)