неділя, 26 жовтня 2008 р.

Add Group to Local Admins

Стандартна ситуація - необхідно програмними засобами додати деяку доменну або локальну групу до групи локальних адміністратрів машини. Приводжу простий код на c#, що виконує дану задачу:

using System;
using System.DirectoryServices;
using System.Collections;

namespace AddLocalAdmin
{
    class Program
    {
        public static void AddGroupToLocalAdmins(string GroupAdd)
        {
            bool IsPresent = false;
            DirectoryEntry grp = new DirectoryEntry("WinNT://" + Environment.MachineName + "/Administrators,group");
            object members = grp.Invoke("members", null);
            foreach (object groupMember in (IEnumerable)members)
            {
                DirectoryEntry member = new DirectoryEntry(groupMember);
                if (member.Name == GroupAdd) IsPresent = true;
            }
            if (!IsPresent) grp.Invoke("Add", "WinNT://" + Environment.MachineName + "/" + GroupAdd + ",group");
            else
            {
                Console.WriteLine("Already present");
                
            }
            grp.CommitChanges();
        }
        public static void Main(string[] args)
        {
            try
            {
                AddGroupToLocalAdmins(args[0]);
                Console.WriteLine("huj {0}", args[0]);
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + "\n" + ex.StackTrace + "\n" + ex.Source); 
                Console.ReadLine();

            }
        }
    }
}

Якщо замість локальної додаємо доменну групу, то в методі grp.Invoke замість парамтеру "WinNT://" + Environment.MachineName + "/" + GroupAdd + ",group" вказуємо "WinNT:///" + GroupAdd + ",group"
Можливо комусь цей код і стане в нагоді.

Немає коментарів: