Пишем собственную утилиту для администрирования. Часть 1

Как я не однократно упоминал, любой программист должен знать, или хотя бы представлять себе как работает та или иная программа и уж тем более системная утилита. Это в первую очередь помогает понимать сам процесс взаимодействия операционной системы и программы. И следовательно создавать для себя, в качестве удобства администрирования свои собственные утилиты. Ну не пользоваться же в конце концов встроенными?

В этой статье и в последующих я рассмотрю разработку собственной утилиты для администрирования под управлением операционных систем Windows 2000/XP., которая позволит создавать пользователей, удалять их, редактировать профиль, изменять пароль и много другое.

А теперь приступим. Начнем с того, как научить нашу прогу получать список зарегистрированных пользователей. Для этого рассмотрим такую системную API-функцию как NetUserEnum. В MSDN’е она описана таким образом:

Где первый параметр указывает на компьютер в сети. Если в качестве этого параметра указать nil, то система определит локальное имя компьютера.

Параметр level указывает системе о том какого уровня требуется информация об акаунте, более подробно их мы рассмотрим позже, но кому не терпится, могут почитать на MSDN’e. Но в примере мы рассмотрим уровень – 10. Он нам вернет имя акаунта, информацию об аккаунте.

Далее используется параметр в котором нужно указать по какому признаку фильтровать системную информацию. Как гласит справка MSDN их всего 6:

Подробней о них в следующей статье, а в примере мы будем использовать FILTER_NORMAL_ACCOUNT.
В следующий параметр будет возвращен результат работы функции.

В следующем параметре указываем размер буфера.

В entriesread будет возвращено количество актуальных прочтенных записей, а в параметре totalentries – общее количество записей(зарегистрированных пользователей).

В последнем параметре будет возвращен указатель, для возможности продолжения работы.

В случае успешной отработки данной функции будет возвращено нулевое значение. В случае же ошибки будет возвращен один из следующих кодов ошибок:

В связи с выбранным уровнем 10, будем исследовать следующую структуру, которая описана в справке MSDN:

Так как наш язык программирования Delphi. Все выше описанное следует переделать под него, ну и не долго тянув кота за яйки, рассмотрим исходник получения списка пользователей в ОС Windows:

Delphi

Когда вы взгляните на результат работы функции, у вас появиться вопрос, а зачем нам нужны технические пользователи созданные системой автоматически для своих нужд? Абсолютно с вами соглашусь, возвращенный результат содержит много побочной и не нужной инфы, однако, стоит знать все, что известно о пользователе, зарегистрированном в системе, все может пригодиться ;). А в следующей статье мы рассмотрим более подробно используемые структуры, другие системные функции для работы с пользователями и естественно возможность отсеивания не нужной инфы.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: