4. Видалення облікового запису користувача
Для видалення облікового запису користувача з бази даних менеджера облікових записів використовується функція NetuserDel, яка має наступний прототип:
NET_API_STATUS NetUserDel(
LPCWSTR servername, // ім'я сервера
LPCWSTR username // ім'я користувача
);
Відзначимо, що успішно цю функцію можуть виконати тільки користувачі, які є адміністраторами або операторами облікових записів. А обліковий запис адміністратора може видалити тільки інший адміністратор.
У разі успішного завершення функція NetuserDel повертає значення NERR_success, а у разі невдачі можливі наступні коди завершення:
□ error_access_denied — користувачеві відмовлено в доступі;
□ NERR_invaiidComputer — неправильне ім'я комп'ютера;
□ NERR_NotPrimary — не первинний контроллер домена;
□ NERR_userNotFound — ім’я користувача не знайдене.
Параметри цієї функції мають таке ж призначення, як в інших функціях управління користувачами.
Параметр servername повинен указувати на рядок з ім'ям сервера, на якому виконуватиметься функція. Цей рядок повинен мати кодування Unicode і починатися з символів \\. Якщо функція повинна виконуватися на локальному комп'ютері, то цей параметр повинен мати значення null.
Параметр username повинен указувати на рядок з ім'ям облікового запису, який віддаляється з бази даних менеджера облікових записів. Цей рядок повинен мати кодування Unicode.
У лістингу 4 приведена програма, яка видаляє обліковий запис користувача, використовуючи функцію NetUserDel.
Лістинг 4. Видалення облікового запису користувача
#include <stdio.h>
#include <windows.h>
#include <lm.h>
#pragma comment( lib, "netapi32.lib" ) // подключаем сетевую библиотеку
int main()
{
wchar_t server_name[256] = L"\\\\"; // имя сервера
wchar_t user_name[UNLEN]; // имя пользователя
NET_API_STATUS ret_status; // код возврата из функции
printf("Input server name: ");
wscanf(L"%s", server_name); // читаем имя домена
printf("Input user name: ");
wscanf(L"%s", user_name); // читаем имя пользователя
// удалаем пользователя
ret_status = NetUserDel(
server_name, // имя домена
user_name); // имя пользователя
// проверяем на успешное завершение
if (ret_status != NERR_Success)
{
printf("Net user del failed.\n");
printf("Net API Status: %d\n", ret_status);
return ret_status;
}
printf("The user is deleted.\n");
return 0;
}
Практичне завдання:
Набрати та відлагодити всі наведені в теоретичних відомостях лістинги.
Написати програму, яка буде створювати користувачів з іменами що задаються маскою та кількістю. Наприклад: student@, 1-10 student1, student2, student3… user-@@, 1-10 user-01, user-02, user-03…
Написати програму виведення інформації про користувачів, які задовольняють умовам фільтру. Наприклад: mel* melnyk0125, melok5, melone, melkyj2…
Написати програму видалення користувача за введеним ім’ям облікового запису.
