#include <iostream.h>
#include <windows.h>
BOOL (WINAPI *RegisterServiceProcess)(DWORD dwProcessId,DWORD dwType);
int main(){
HINSTANCE hKernel;
int i=1;
//Пытаемся получить идентификатор загруженной библиотеки
hKernel=LoadLibrary("KERNEL32.DLL");
if(hKernel){
//Идентификатор загруженной библиотеки был успешно получен
cout<<"Success load library kernel32.dll"<< endl;
RegisterServiceProcess=(int(__stdcall*)(DWORD,DWORD))
GetProcAddress(hKernel,"RegisterServiceProcess");
if(RegisterServiceProcess){
//Указатель на функцию RegisterServiceProcess был
//успешно получен.
cout<<"Success to have address of the specified exported dynamic-link
library (DLL) function"<< endl;
if(RegisterServiceProcess(GetCurrentProcessId(),i))
cout<<"Success registers the process as a service process"<< endl;
//Процесс был успешно зарегестрирован как сервис
}else{
//Указатель на функцию RegisterServiceProcess не
//был успешно получен.
cout<<"Failed to have address of the specified exported dynamic-link
library (DLL) function"<< endl;
cin>>i;
return 0;
}
}else{
//Идентификатор загруженной библиотеки не был получен
cout<<"Failed load library kernel32.dll"<< endl;
cin>>i;
return 0;
}
cout<<"Registers the process as a service process:1"<< endl;
cout<<"Unregisters the process as a service process:0"<< endl;
cin>>i;
if (RegisterServiceProcess(GetCurrentProcessId(),i)){
cout<<"Success"<< endl;
}else{
cout<<"Failed"<< endl;
}
cin>>i;
return 0;
}
Для компиляции использовался MSVC5, проект типа Console Application,
чтобы в процессе сборки не было недоразумений проверьте на вкладке Link
поле Object libraries/modules, оно должно быть пустым.