char *SNAME = "Service1";
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
SC_HANDLE scm=OpenSCManager(NULL,NULL,
SC_MANAGER_CREATE_SERVICE);
if (scm!=NULL){
SC_HANDLE svc=CreateService(scm,
SNAME, SNAME,//Service名字
SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS
|SERVICE_INTERACTIVE_PROCESS,
SERVICE_AUTO_START,
//以自动方式开始
SERVICE_ERROR_IGNORE,
"C:\\Documents and Settings\\Administrator\\My Documents\\RAD Studio\\Projects\\ServiceTest\\Debug\\project1.exe", //Service本体程序路径,
NULL,NULL,NULL,NULL,NULL);
if (svc!=NULL)
CloseServiceHandle(svc);
CloseServiceHandle(scm);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
SC_HANDLE scm=OpenSCManager(NULL,NULL, SC_MANAGER_CONNECT);
if (scm!=NULL){
SC_HANDLE svc=OpenService(scm, SNAME,
SERVICE_ALL_ACCESS);
if (svc!=NULL){
_SERVICE_STATUS ServiceStatus ;//= new LPSERVICE_STATUS();
QueryServiceStatus(svc,&ServiceStatus);
if (ServiceStatus.dwCurrentState==
SERVICE_RUNNING)//删除前,先停止此Service.
ControlService(svc,
SERVICE_CONTROL_STOP,&ServiceStatus);
DeleteService(svc);
CloseServiceHandle(svc);
//删除Service后,最好再调用CloseServiceHandle
}
//以便立即从数据库中移走此条目。
CloseServiceHandle(scm);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button3Click(TObject *Sender)
{
SC_HANDLE scm=OpenSCManager(NULL,NULL,SC_MANAGER_CONNECT);
if (scm!=NULL){
SC_HANDLE svc=OpenService(scm, SNAME,SERVICE_START);
if (svc!=NULL){
StartService(svc,0,NULL);//开始Service
CloseServiceHandle(svc);
}
CloseServiceHandle(scm);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button4Click(TObject *Sender)
{
SC_HANDLE scm=OpenSCManager(NULL,NULL,
SC_MANAGER_ALL_ACCESS);
if (scm!=NULL){
SC_HANDLE svc=OpenService(scm, SNAME,
SERVICE_STOP|SERVICE_QUERY_STATUS);
if (svc!=NULL){
_SERVICE_STATUS ServiceStatus;
QueryServiceStatus(svc,&ServiceStatus);
if (ServiceStatus.dwCurrentState==
SERVICE_RUNNING)
ControlService(svc,
SERVICE_CONTROL_STOP,&ServiceStatus);
CloseServiceHandle(svc);
}
CloseServiceHandle(scm);
}
}
//---------------------------------------------------------------------------