Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Soft - Windows (https://forum.antichat.xyz/forumdisplay.php?f=47)
-   -   AppToService (https://forum.antichat.xyz/showthread.php?t=31313)

Ch3ck 14.01.2007 20:30

AppToService
 
Кто-то спрашивал как сделать, чтобы консольное окно программы не мозолило глаза...
Сегодня поднял старую подшивку Хакера и нарвался на это(отрывок):
Цитата:

В тексте статьи остался один нераскрытый вопрос: как замаскировать BNC и windrop в чужой Windows-системе? Понятно, что оставлять консольное окошко с работающим приложением нельзя, так как его сразу заметит пользователь. Самый простой выход из этой ситуации — запустить приложение как сервис, тем самым мы убьем сразу двух зайцев. Во-первых, приложение легко затеряется среди многочисленных служб винды, в которых обычный пользователь никогда не станет копаться. А во-вторых, с умом обеспечим автоматический запуск проги во время запуска системы, на случай, если компьютер будет перезагружен или выключен. Единственная проблема заключается в том, что по умолчанию возможности запуска ircproxy и windrop как сервиса нет, поэтому нам придется прибегнуть к помощи сторонних приложений. Я рекомендую использовать консольную утилиту AppToService (www.basta.com/ProdAppToService.htm). Отмечу, что ее последние версии стали платными, поэтому лучше будет не мучиться с регистрацией и скачать вариант постарее (www.3dnews.ru/documents/1143/AppToService.zip). Если запустить программу без каких-либо ключей, AppToService выдаст краткую справку, которой вполне достаточно, чтобы составить команду для запуска нашего приложения. Вот пример:
C:\IRCPROXY>apptoservice /Install "IRCPROXY.EXE" /AbsName:"System service" /Startup :A
P.S Если честно, до этого сам не знал, как такое реализовывается...

Deem3n® 14.01.2007 21:02

Программная реализация:
Код:

#include <iostream>
#include <windows.h>
#include <winsvc.h>

main()
{
        SC_HANDLE MdaService, SCManager;
       
        SCManager = OpenSCManager(0, 0, SC_MANAGER_CREATE_SERVICE);
        if(!SCManager)
        {
                std::cout << "Error" << std::endl;
                return 1;
        }
       
        //////////////////////////////////////////////////
        // запуск (установка) обычной программы как сервис
        //////////////////////////////////////////////////
        MdaService = CreateService(
                SCManager,
                "MdaServiceInternalName",
                "Mda Service External Name",
                SERVICE_ALL_ACCESS,
                SERVICE_WIN32_OWN_PROCESS,
                SERVICE_DEMAND_START,
                SERVICE_ERROR_NORMAL,
                "C:\\MdaService.exe",
                0,0,0,0,0);
       
        if(!MdaService)
        {
                CloseServiceHandle(SCManager);
                std::cout << "Error" << std::endl;
                return 1;
        }

        //////////////////////////////////////////////////
        // ну а это - удаление сервиса (если понадобится)
        //////////////////////////////////////////////////
        /*
        MdaService = OpenService(
                SCManager,     
                "MdaServiceInternalName",
                DELETE);

       
        if(!MdaService)
        {
                CloseServiceHandle(SCManager);
                std::cout << "Error" << std::endl;
                return 1;
        }

        if (!DeleteService(MdaService))
        {
                CloseServiceHandle(SCManager);
                std::cout << "Error" << std::endl;
                return 1;
        }
        */
       
        CloseServiceHandle(MdaService);
        CloseServiceHandle(SCManager);
       
        return 0;
}



Время: 06:59