Создание локального пользователя считает c# и.NET 2.0

вы можете использовать оператор typeof.

Например,

var dataSet;

alert("Variable dataSet is : " + typeof dataSet);

Выше фрагмента кода вернет вывод, например

переменная dataSet: undefined.

20
задан Joseph Ferris 21 December 2008 в 13:24
поделиться

2 ответа

Прочитайте это превосходное практическое руководство статьи

CodeProject: (почти) Все В Active Directory через C#

существует раздел "Create User Account" и "Dealing with User Passwords".

ОБНОВЛЕНИЕ:

Для адаптации кода к локальным учетным записям заменяют соответствующие строки ими:

DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + 
    Environment.MachineName);
DirectoryEntry newUser = localMachine.Children.Add("localuser", "user");

Здесь запускает исходный фрагмент кода для учетных записей домена:

public string CreateUserAccount(string ldapPath, string userName, 
    string userPassword)
{
    string oGUID = string.Empty;
    try
    {          
        string connectionPrefix = "LDAP://" + ldapPath;
        DirectoryEntry dirEntry = new DirectoryEntry(connectionPrefix);
        DirectoryEntry newUser = dirEntry.Children.Add
            ("CN=" + userName, "user");
        newUser.Properties["samAccountName"].Value = userName;

        int val = (int)newUser.Properties["userAccountControl"].Value; 
        newUser.Properties["userAccountControl"].Value = val | 0x10000; 

        newUser.CommitChanges();
        oGUID = newUser.Guid.ToString();

        newUser.Invoke("SetPassword", new object[] { userPassword });
        newUser.CommitChanges();

        dirEntry.Close();
        newUser.Close();
    }
    catch (System.DirectoryServices.DirectoryServicesCOMException E)
    {
        //DoSomethingwith --> E.Message.ToString();    
    }
    return oGUID;
}

существуют некоторые специфические особенности для понимания при контакте с паролями пользователя и границами вокруг паролей, таких как то, чтобы вынуждать пользователя изменить их пароль на следующем входе в систему, отклоняя пользователя право изменить их собственные пароли, устанавливая пароли, чтобы никогда истечь, к тому, когда истечь, и эти задачи могут быть выполнены с помощью флагов UserAccountControl, которые продемонстрированы в продолжающихся разделах.

См. это великое статья MSDN: Управление Паролями пользователя для примеров и документации относительно этих функций.

CONST                          HEX
------------------------------------------
SCRIPT                         0x0001
ACCOUNTDISABLE                 0x0002
HOMEDIR_REQUIRED               0x0008
LOCKOUT                        0x0010
PASSWD_NOTREQD                 0x0020
PASSWD_CANT_CHANGE             0x0040
ENCRYPTED_TEXT_PWD_ALLOWED     0x0080
TEMP_DUPLICATE_ACCOUNT         0x0100
NORMAL_ACCOUNT                 0x0200
INTERDOMAIN_TRUST_ACCOUNT      0x0800
WORKSTATION_TRUST_ACCOUNT      0x1000
SERVER_TRUST_ACCOUNT           0x2000
DONT_EXPIRE_PASSWORD           0x10000
MNS_LOGON_ACCOUNT              0x20000
SMARTCARD_REQUIRED             0x40000
TRUSTED_FOR_DELEGATION         0x80000
NOT_DELEGATED                  0x100000
USE_DES_KEY_ONLY               0x200000
DONT_REQ_PREAUTH               0x400000
PASSWORD_EXPIRED               0x800000
TRUSTED_TO_AUTH_FOR_DELEGATION 0x1000000
22
ответ дан 29 November 2019 в 23:41
поделиться

Этот код создаст локальную учетную запись с паролем, никогда не истекает набор опции:

        using System.DirectoryServices;

        DirectoryEntry hostMachineDirectory = new DirectoryEntry("WinNT://localhost");
        DirectoryEntries entries = hostMachineDirectory.Children;
        bool userExists = false;
        foreach (DirectoryEntry each in entries)
        {
            userExists = each.Name.Equals("NewUser",  
            StringComparison.CurrentCultureIgnoreCase);
            if (systemtestUserExists)
                break;
        }

        if (false == userExists)
        {
            DirectoryEntry obUser = entries.Add("NewUser", "User");
            obUser.Properties["FullName"].Add("Local user");
            obUser.Invoke("SetPassword", "abcdefg12345@");
            obUser.Invoke("Put", new object[] {"UserFlags", 0x10000});
            obUser.CommitChanges();
        }

Флаг 0x10000 означает PasswordNeverExpires.

Я провел долгое время, выясняя, как создать учетную запись локального пользователя с набором пароля для не истечения. Кажется этим, когда Вы пытаетесь использовать:

int val = (int)newUser.Properties["userAccountControl"].Value; 
newUser.Properties["userAccountControl"].Value = val | 0x10000

полномочия из активного каталога начинают действовать. Если у Вас есть активные полномочия каталога, все хорошо работает. Если Вы не сделаете то затем получение userAccountControl свойства будет всегда приводить к нулевому значению. Попытка установить userAccountControl приведет к исключению "Свойство каталога, не может быть найден в кэше".

Однако после большого поиска вокруг я нашел другое свойство "UserFlags", которое должно быть установлено с помощью, Вызывают. Можно использовать это для установки флага на локальной учетной записи. Я попробовал этот код, и он работал над Windows Server 2008.

Надеюсь, это поможет

22
ответ дан 29 November 2019 в 23:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: