// Lession5.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <windows.h> using namespace std; class CDSvr{ public: static void ShowHelp(void); CDSvr(){para=NULL;}; CDSvr(_TCHAR* argv[]); ~CDSvr(){}; void Run(); static bool CreateSvr(_TCHAR* svrname,_TCHAR* path); static bool DeleteSvr(_TCHAR* svrname); private: _TCHAR** para; }; CDSvr::CDSvr(_TCHAR* argv[]){ para=argv; Run(); } void CDSvr::Run(){ } void CDSvr::ShowHelp(){ cout<<" [use] "<<endl <<" [svrname] [path] "<<" create the service "<<endl <<" [svrname]"<<" delete service "<<endl; } bool CDSvr::CreateSvr(_TCHAR *svrname, _TCHAR *path){ SC_HANDLE sch=::OpenSCManager(NULL,NULL,SC_MANAGER_CREATE_SERVICE); if( NULL==sch ){ cout<<"openSCManager failed!"<<endl; return false; } SC_HANDLE sccs=NULL; if( NULL==(sccs=::CreateService( sch,svrname,svrname, SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS, SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,path,NULL,NULL,NULL,NULL,NULL) ) ){ cout<<"CreateService Error"<<endl; ::CloseHandle(sch); ::CloseHandle(sccs); return false; } ::CloseHandle(sch); ::CloseHandle(sccs); return true; } bool CDSvr::DeleteSvr(_TCHAR *svrname){ SC_HANDLE sch=::OpenSCManager(NULL,NULL,SC_MANAGER_CREATE_SERVICE); if( NULL==sch ){ cout<<"openSCManager failed!"<<endl; return false; } SC_HANDLE sc=::OpenService(sch,svrname,SERVICE_ALL_ACCESS); if( NULL==sc ){ cout<<"open services failed!"<<endl; ::CloseHandle(sch); ::CloseHandle(sc); return false; } if(::DeleteService(sc)){ cout<<"delete "<<sc<<" SUCCESS"<<endl; }else{ cout<<"delete "<<sc<<" ERROR"<<endl; } ::CloseHandle(sch); ::CloseHandle(sc); return true; }; int _tmain(int argc, _TCHAR* argv[]) { if( argc<2 ){ CDSvr::ShowHelp(); }else if( argc==2 ){ if(CDSvr::DeleteSvr( argv[argc-1])){ cout<< " DONE !!!"<<endl; }else{ cout<< " ERROR!!!"<<endl; } }else if( argc==3 ){ if(CDSvr::CreateSvr(argv[argc-2],argv[argc-1])){ cout<<" DONE!!!"<<endl; }else{ cout<<" ERROR!!"<<endl; } } return 0; }