Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_drsp_02.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
123 Кб
Скачать
☆

2. Отримання інформації про локальну групу

Для отримання інформації про локальну групу використовується функція NetLocalGroupGetinfo, яка має наступний прототип:

NET_API_STATUS NetLocalGroupGetinfo(

LPCWSTR servername, // ім’я сервера

LPCWSTR groupname, // ім’я групи

DWORD level, // рівень інформації

LPBYTE *bufptr // буфер для інформації

);

Відзначимо, що успішно цю функцію можуть виконати тільки користувачі, які є адміністраторами або операторами облікових записів.

У разі успішного завершення функція NetLocalGroupGetinfo повертає значення NERR_success, а у разі невдачі можливі наступні коди завершення:

  • error_access_denied — користувачеві відмовлено в доступі;

  • NERR_invalidComputer — неправильне ім’я комп’ютера;

  • error_no_such_alias — група з таким ім’ям не існує.

Параметри функції NetLocalGroupGetinfo мають наступне призначення.

Параметр servername повинен указувати на рядок з ім’ям сервера, на якому виконуватиметься функція. Цей рядок повинен мати кодування Unicode і починатися з символів \\. Якщо функція повинна виконуватися на локальному комп’ютері, то цей параметр повинен мати значення null.

Параметр groupname повинен указувати на рядок з ім’ям локальної групи, про яку отримують інформацію. Цей рядок повинен мати кодування Unicode.

Параметр level указує тип структури, яка містить інформацію про локальну групу. Цей параметр може приймати тільки одне значення — 1, яке вказує на те, що використовується структура типу localgroup_info_1;

Параметр bufptr повинен містити адресу покажчика, в який система запише адресу буфера з інформацією про локальні групи. Пам’ять під буфер розподіляється системою. Тому після прочитання інформації з буфера В лістингу 2 приведена програма, яка отримує інформацію про локальну Групу, використовуючи для цього функцію NetLocalGroupGetinfo.

Лістинг 2. Отримання інформації про локальну групу

#include <stdio.h>

#include <windows.h>

#include <lm.h>

#pragma comment( lib, "netapi32.lib" ) // підключаємо мережеву бібліотеку

int main()

{

wchar_t server_name[256] = L"\\\\"; // ім’я сервера

wchar_t group_name[GNLEN]; // ім’я локальної групи

LOCALGROUP_INFO_1 *buf_ptr = NULL; // адрес буфера для даних

NET_API_STATUS ret_status; // код повернення з функції

printf("Input server name: ");

// формуємо ім’я сервера

wscanf(L"%s", server_name + wcslen(server_name));

printf("Input a name for the local group: ");

wscanf(L"%s", group_name); // вводимо ім’я групи

// отримуємо інформацію про локальну групу

ret_status = NetLocalGroupGetInfo(

server_name, // ім’я сервера

group_name, // ім’я групи

1, // отримуємо ім’я групи і коментар

(LPBYTE*)&buf_ptr); // вказівник на адресу буфера для даних

// перевіряємо завершення функції

if (ret_status != NERR_Success)

{

printf("Net local group get info failed.\n");

NetApiBufferFree(buf_ptr); // звільняємо буфер для даних

return ret_status;

}

// виводимо на консоль ім’я локальної групи і коментар

wprintf(L"Local group name: %s\n", buf_ptr->lgrpi1_name);

wprintf(L"Comment: %s\n", buf_ptr->lgrpi1_comment);

NetApiBufferFree(buf_ptr); // звільняємо буфер для даних

return 0;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]