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

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


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

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



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.

Динамический запуск сервера MS SQL

Источник: www.исходники.ru

Следующий пример показывает, как на C++ динамически запускать MS SQL Server в Windows NT. Всё, что для этого потребуется, это включить в проект w95scm.lib, которая поставляется с SQL 7.0 CD.

 
 // находится на Sql7.0 CD
 
 #include "wn95scm.h"
 
 
 
 BOOL  StartSqlServer(LPSTR szErrorMsg) {
 
     LPSTR      szService = "MSSQLServer";
 
     DWORD      dwServiceState, dwErr;
 
     BOOL       bControlSuccessful;
 
 
 
     // состояние сервиса.
 
     bControlSuccessful = TRUE;
 
     dwServiceState = SQLSCMGetLocalServiceState(szService, &dwErr);
 
     while ((dwServiceState != 0) && (bControlSuccessful == TRUE)) {
 
         if (dwServiceState == SERVICE_RUNNING)
 
             break;
 
         switch (dwServiceState) {
 
             // если в режиме паузы, то даём команду продолжить работу.
 
             case SERVICE_PAUSED:
 
                 bControlSuccessful=SQLSCMLocalServiceControl(szService,
 
                                                              SQLSCMCmd_CONTINUE,
 
                                                              &dwErr, 0, NULL);
 
                 break;
 
             // Если остановлен, то запускаем сервис
 
             case SERVICE_STOPPED:
 
                 bControlSuccessful=SQLSCMLocalServiceControl(szService,
 
                                                              SQLSCMCmd_START,
 
                                                              &dwErr, 0, NULL);
 
                 break;
 
             // Если состояние 0, то возникла ошибка при определении
 
             // состояния сервиса.
 
             default:
 
                 // Error. Return failure.
 
                 if (dwServiceState == 0) {
 
                     sprintf(szErrorMsg, "Error %lu on attempt to
 
                                          determineservice state.", dwErr);
 
                     return (FALSE);
 
                     }
 
             }
 
         Sleep(5);
 
         dwServiceState = SQLSCMGetLocalServiceState(szService, &dwErr);
 
         }
 
     if (bControlSuccessful) {
 
         sprintf(szErrorMsg, "Error %lu returned on attempt to
 
                              change service state.", dwErr);
 
         }
 
     return (bControlSuccessful ? TRUE : FALSE);
 
     }
 
 


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

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




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



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


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