gifts2017

C# Создание пользователя windows из командной строки

Опубликовал Павел Ларионов (RegrZ) в раздел Администрирование - Системное

C# консольное приложение которое позволяет создавать локальных пользователей в WINNT системах без AD.

C# консольное приложение которое позволяет создавать локальных пользователей в WINNT системах без AD.
проверено на (Windows server 2008 R2, Windows 7, Windows 2003) проверялось на системах не включенных в домен.
легко запускается из кода 1С методом ЗапуститьПриложение(), что позволяет использовать эту утилиту для пакетного создания пользователей Windows, одновременно с пользователями 1С.
Например у меня эта утилита задействована в обработке клонирования пользователя УПП, одновременно с пользователем в базе создается его пользователь на сервере.
Для создания пользователя нужно запустить приложение из командной строки, передав в параметрах командной строки свойства нового пользователя, например так:

"C:\CreateWinUser.exe" NewUserName "NewUser full name" SomePassword22 "Описание нового пользователя" "D:\batch\ПриложениеЗапускаемоеПриВходе.cmd" "Пользователи,Пользователи удаленного рабочего стола"

при запуске передаем 6 параметров разделенных пробелом, (параметры содержащие пробел передаются в "кавычках").
Имя
Полное имя
Пароль
Описание
Приложение запускаемое во время логона
список групп через запятую (группы нужно передавать именно так как они представлены в списке на сервере, чтобы найти их по наименованию)

Проект во вложении скомпилирован в Visual Studio 2010 Ultimate.
при желании код можно легко перенести во внешнюю компоненту, тогда можно было бы генерировать пароли и проверять наличие пользователя перед созданием.
но мне это пока не нужно :)

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Архив содержит папку с проектом и приложение CreateWinUser.exe
.rar 56,02Kb
06.02.13
9
.rar 56,02Kb 9 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Никита Коротаев (bforce) 08.02.13 10:05
Неплохо, но почему бы не прибегнуть к командной строке? Почему понадобилось имеено отдельное приложение?
net user ИмяПользователя Пароль /add
net localgroup Администраторы ИмяПользователя /add
K_A_O; dour-dead; +2 Ответить 1
2. Павел Ларионов (RegrZ) 09.02.13 05:31
Сам долгое время пользовался vbs скриптом для этой цели, но скрипт отрабатывал нестабильно, иногда у новых пользователей были не заполнены группы, иногда среда. Кроме того управляемый код удобнее контролировать и дорабатывать. Да и не нашел ничего подобного в нете, в готовом виде :)
3. bulpi bulpi (bulpi) 13.02.13 15:12
(1) bforce,
А как с помощью net задать запускаемую программу при старте? В свое время искал, не нашел.
4. Никита Коротаев (bforce) 14.02.13 10:02
(3) bulpi, никак. Командная строка, действительно, этот параметр установить не дает. Здесь нужно использовать что-нибудь немногим технологичнее.
5. smaharbA (smaharbA) 11.03.13 08:46
Синтаксис данной команды:

NET USER
[имя_пользователя [пароль | *] [параметры]] [/DOMAIN]
         имя_пользователя {пароль | *} /ADD [параметры] [/DOMAIN]
         имя_пользователя [/DELETE] [/DOMAIN]
         имя_пользователя [/TIMES:{время | ALL}]
         имя_пользователя [/ACTIVE: {YES | NO}]

Команда NET USER используется для создания и изменения учетных записей
пользователей на компьютерах. При выполнении команды без параметров
отображается список учетных записей пользователей данного компьютера.
Сведения об учетных записях пользователей хранятся в базе данных учетных
записей пользователей.

имя_пользователя     Имя учетной записи пользователя, которую необходимо 
             добавить, удалить, изменить или просмотреть.
             Длина имени учетной записи пользователя не должна превышать
             20 символов.
пароль       Назначает или изменяет пароль для учетной записи пользователя.
             Длина пароля не должна быть меньше минимально допустимого
             значения, определяемого параметром /MINPWLEN команды NET ACCOUNTS.
             Длина пароля не должна превышать 14 символов.
*            Вывод приглашения на ввод пароля. При вводе пароль
             не отображается.
/DOMAIN      Выполнение операции на контроллере текущего домена.
/ADD         Добавление учетной записи пользователя в базу учетных записей
             пользователей.
/DELETE      Удаление учетной записи пользователя из базы данных учетных
             записей пользователей.

Дополнительные параметры:

   Параметры                    Описание
      --------------------------------------------------------------------
   /ACTIVE:{YES | NO}         Активация или деактивация учетной записи. Если
                              учетная запись неактивна, пользователь не сможет
                              получить доступ к серверу. Значение
                              по умолчанию: YES (учетная запись активна).
   /COMMENT:"текст"           Добавление описания учетной записи
                              пользователя. Текст должен быть заключен
                              в кавычки.
   /COUNTRYCODE:nnn           Использование кода страны операционной системы
                              для включения соответствующих языковых файлов
                              при отображении пользовательской справки и
                              сообщений об ошибках. Значение "0" соответствует
                              коду страны или региона по умолчанию.
   /EXPIRES:{дата | NEVER}    Дата окончания срока действия учетной записи.
                              Значение NEVER соответствует неограниченному
                              сроку действия учетной записи.
                              Дату окончания срока действия
                              следует указывать в формате мм/дд/гг(гг).
                              Месяц указывается числом или названием
                              (полным или сокращенным до трех букв).
                              Год указывается двумя
                              или четырьмя цифрами. Для разделения элементов
                              даты используется косая черта без пробелов (/).
   /FULLNAME:"имя"            Полное имя пользователя (не имя пользователя 
                              в учетной записи). Имя должно быть заключено
                              в кавычки.
   /HOMEDIR:путь              Путь к домашнему каталогу пользователя.
                              Этот путь должен существовать.
   /PASSWORDCHG:{YES | NO}    Определение возможности
                              изменения пароля пользователем. Значение
                              по умолчанию: YES.
   /PASSWORDREQ:{YES | NO}    Определение необходимости наличия пароля
                              у учетной записи пользователя. Значение
                              по умолчанию: YES.
   /LOGONPASSWORDCHG:{YES|NO} Определение необходимости
                              смены пароля при следующем входе в систему.
                              Значение по умолчанию: NO.
   /PROFILEPATH[:путь]        Путь к профилю входа пользователя.
   /SCRIPTPATH:путь           Путь к сценарию входа
                              пользователя.
   /TIMES:{время | ALL}       Часы входа в систему. Значение параметра TIMES
                              следует задавать в формате
                              день[-день][,день[-день]],время[-время][,время
                              [-время]], причем шаг приращения времени равен
                              1 часу. Названия дней можно указывать полностью
                              или сокращенно. Часы задаются в 12- или
                              24-часовом формате. Для 12-часового формата
                              используются обозначения am, pm, a.m. или p.m.
                              Значение ALL соответствует отсутствию ограничений
                              на время входа в систему, а пустое значение
                              обозначает полный запрет на вход.
                              Значения дней недели и времени разделяются
                              запятой. Несколько записей значений дней
                              недели и времени разделяются точкой с запятой.
   /USERCOMMENT:"текст"       Добавление или изменение администратором
                              комментария пользователя к учетной записи.
   /WORKSTATIONS:{имя_компьютера[,...] | *}
                              Возможность указать до 8 компьютеров, с которых
                              пользователь может войти в сеть. Если для
                              параметра /WORKSTATIONS не указан список или
                              задано значение *, пользователь сможет войти
                              в сеть с любого компьютера.

NET HELP имя_команды | MORE - постраничный просмотр справки.
...Показать Скрыть
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа