Как я могу создать сервис? - PullRequest
0 голосов
/ 28 марта 2019

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

#define rootkitname "myrootkit"
SC_HANDLE hSCManager;
hSCManager=OpenSCManager(NULL, NULL,SC_MANAGER_CREATE_SERVICE);
LPVTSTR rootkpath;
rootkpath="C:\Users\Admin\Desktop\Blocker\Project1.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 Ответ

1 голос
/ 28 марта 2019

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

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

...