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

1002 — Використовується структура типу localgroup_info_1002.

Параметр buf повинен указувати на буфер з інформацією про локальну групу. Інформація повинна зберігатися в структурі, тип якої заданий параметром level.

У змінну, на яку указує параметр parm_err, функція NetLocalGroupSetinfo поміщає індекс першого поля в структурі з інформацією про локальну групу, яке містить неправильні дані і, як наслідок, викликало завершення функції NetLocalGroupSetinfo з помилкою.

У подвійне слово, на яке указує параметр, функція NetLocalGroupSetinfo може записати одне з наступних значень:

  • localgroup_name_parmnum — неправильне ім’я групи;

  • localgroup_comment_parmnum — неправильний коментар.

У цьому параметрі може бути встановлене значення null. В цьому випадку індекс поля з неправильними даними не повертається.

Тепер опишемо структуру localgroup_info_0, яка має наступний тип:

typedef struct _LOCALGROUP_INFO_0 {

LPWSTR igrpi0_name; // ім’я групи

}LOCALGROUP_INFO_0, * PLOCALGROUP_INFO_0, * LPLOCALGROUP_INFO_0;

У єдиному полі igrpi0_name зберігається покажчик на рядок з ім’ям локальної групи. Довжина рядка не повинна перевищувати gnlen байт, а сам рядок повинен мати кодування Unicode.

У лістингу 4 приведена програма, яка змінює ім’я локальної групи, використовуючи для цього функцію NetLocalGroupSetlnfo.

Лістинг 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 old_name[GNLEN]; // старе ім’я локальної групи

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

wchar_t comment[MAXCOMMENTSZ]; // новий коментар

LOCALGROUP_INFO_0 group_info_0; // інформація про ім’я групи

LOCALGROUP_INFO_1 group_info_1; // опис нової групи

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

printf("Input а server name: ");

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

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

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

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

printf("Input а new name for the group: ");

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

// встановлюємо адресу імені в структуру

group_info_0.lgrpi0_name = new_name;

// змінюємо ім’я групи

ret_status = NetLocalGroupSetInfo(

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

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

0, // нове ім’я групи

(LPBYTE)&group_info_0, // нова інформація про групу

NULL); // індексування інформації немає

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

if (ret_status != NERR_Success)

{

printf("Net local group set name failed.\n");

return ret_status;

}

printf("Local group name was changed.\n");

printf("Input group comments: ");

getwchar(); // очищаємо потік

_getws(comment); // читаємо коментарі про користувача

// встановлюємо новий коментар

group_info_1.lgrpi1_comment = comment;

// змінюємо опис групи

ret_status = NetLocalGroupSetInfo(

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

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

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

(LPBYTE)&group_info_1, // новий опис групи

NULL); // індексування інформації немає

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

if (ret_status != NERR_Success)

{

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

return ret_status;

}

printf("Local group comment was changed.\n");

return 0;

}

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