Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 сентября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

Получение информации о конфигурации сервиса.

Следующий пример открывает дескриптор сервиса при помощи функции OpenService с правом SERVICE_QUERY_CONFIG, а затем в функции QueryServiceConfig использует этот дескриптор, чтобы получить текущие настройки сервиса.

 

VOID GetSampleServiceConfig()
 {
     LPQUERY_SERVICE_CONFIG lpqscBuf;
     LPSERVICE_DESCRIPTION lpqscBuf2;
     DWORD dwBytesNeeded;
 
     // Открываем дескриптор сервиса.
 
     schService = OpenService(
         schSCManager,           // база данных SCManager
         "Sample_Srv",           // имя сервиса
         SERVICE_QUERY_CONFIG);  // нужно только получить
     if (schService == NULL)
         MyErrorExit("OpenService");
 
     // Выделяем буфер для информации о настройках сервиса.
 
     lpqscBuf = (LPQUERY_SERVICE_CONFIG) LocalAlloc(
         LPTR, 4096);
     if (lpqscBuf == NULL)
         MyErrorExit("LocalAlloc");
 
     lpqscBuf2 = (LPSERVICE_DESCRIPTION) LocalAlloc(
         LPTR, 4096);
     if (lpqscBuf2 == NULL)
         MyErrorExit("LocalAlloc");
 
     // Получаем настройки сервиса.
 
     if (! QueryServiceConfig(
         schService,
         lpqscBuf,
         4096,
         &dwBytesNeeded) )
     {
         MyErrorExit("QueryServiceConfig");
     }
 
     if (! QueryServiceConfig2(
         schService,
         SERVICE_CONFIG_DESCRIPTION,
         lpqscBuf2,
         4096,
         &dwBytesNeeded) )
     {
         MyErrorExit("QueryServiceConfig2");
     }
 
     // Распечатываем настройки сервиса.
 
     printf("\nSample_Srv configuration: \n");
     printf(" Тип: 0x%x\n", lpqscBuf->dwServiceType);
     printf(" Тип запуска: 0x%x\n", lpqscBuf->dwStartType);
     printf(" Контроль ошибок: 0x%x\n", lpqscBuf->dwErrorControl);
     printf(" Путь сервиса: %s\n", lpqscBuf->lpBinaryPathName);
 
     if (lpqscBuf->lpLoadOrderGroup != NULL)
         printf(" Группа: %s\n", lpqscBuf->lpLoadOrderGroup);
     if (lpqscBuf->dwTagId != 0)
         printf(" Идентификатор в группе: %d\n", lpqscBuf->dwTagId);
     if (lpqscBuf->lpDependencies != NULL)
         printf(" Зависимости: %s\n", lpqscBuf->lpDependencies);
     if (lpqscBuf->lpServiceStartName != NULL)
         printf(" Имя: %s\n", lpqscBuf->lpServiceStartName);
     if (lpqscBuf2->lpDescription != NULL)
         printf(" Описание: %s\n", lpqscBuf2->lpDescription);
 
     LocalFree(lpqscBuf);
     LocalFree(lpqscBuf2);
 }


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS