Как я могу создать сервис?

#c #c builder-6

#c #c builder-6

Вопрос:

Итак, я хочу создать сервис. Моя программа должна работать как сервис, но не как процесс. Я нашел в Интернете и отредактировал этот код :

 #define rootkitname "myrootkit"
SC_HANDLE hSCManager;
hSCManager=OpenSCManager(NULL, NULL,SC_MANAGER_CREATE_SERVICE);
LPVTSTR rootkpath;
rootkpath="C:UsersAdminDesktopBlockerProject1.exe";
SC_HANDLE hManager,hService;     hService=CreateService(hManager,rootkitname,rootkitname,SERVICE_ALL_ACCESS,SER    VICE_KERNEL_DRIVER, SERVICE_BOOT_START,SERVICE_ERROR_NORMAL,     rootkpath,NULL,NULL,NULL, NULL,NULL,NULL);
StartService(hService,NULL,NULL);
  

Этот код создает сервис, но в нем есть ошибка. В Builder6 у меня эта ошибка:

 [C   Error] Unit1.cpp(60): E2451 Undefined symbol 'LPVTSTR'
[C   Error] Unit1.cpp(60): E2379 Statement missing ;
[C   Error] Unit1.cpp(61): E2451 Undefined symbol 'rootkpath'
[C   Error] Unit1.cpp(63): E2206 Illegal character '' (0x5c)
[C   Error] Unit1.cpp(63): E2227 Extra parameter in call to  __stdcall     CreateServiceA(void *,const char *,const char *,unsigned long,unsigned     long,unsigned long,unsigned long,const char *,const char *,unsigned long     *,const char *,const char *,const char *) 
  

Пожалуйста, помогите мне. Цель моего приложения: пользователь не может закрыть мою программу из диспетчера задач.

Комментарии:

1. Я чувствую, что помогать вам может быть плохой идеей. У вас есть веская причина для того, чтобы хотеть «пользователь не может закрыть мою программу из диспетчера задач»? Желательно такой, который соответствует законам и хорошему вкусу?

2. Я хочу создать программу для школы. Моя программа контролирует всю работу, и дети не загружают плохую программу или другие плохие действия.

3. Удачи с этим. В любом случае, в истинном духе C , давайте дадим вам достаточно веревки, чтобы выстрелить себе в ногу…

4. «Моя программа должна работать как сервис, но не как процесс». Это не сработает. Служба Windows — это процесс. GetCurrentProcessId дает вам реальный идентификатор процесса и т.д.

5. Создание службы не помешает пользователю с достаточными правами остановить службу в диспетчере задач.

Ответ №1:

LPVTSTR это не то, что предлагает Google LPCTSTR (понятия не имею, правильно ли это). Обратная косая черта в строках C должна быть удвоена, поэтому rootkpath="C:\Users\Admin\...

В вызове CreateService rootkpath должно быть просто rootkpath и удалить один из NULL символов в конце, у вас их слишком много.