//--------------------------------------------------------------------------- #include #include #include //--------------------------------------------------------------------------- bool __fastcall TForm1::DeinstallService(AnsiString SrvName) { BOOL ret = true; SC_HANDLE scm; SC_HANDLE svc; UnicodeString blad; int retError = 0; scm = OpenSCManager( NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS ); if( scm==NULL ){ retError = GetLastError(); switch(retError){ case ERROR_ACCESS_DENIED: blad = "Brak uprawnień do menadżera usług"; break; case ERROR_DATABASE_DOES_NOT_EXIST: blad = "The specified database does not exist"; break; default: blad = "Nie udało się otworzyć menadżera usług, kod błędu: " + UnicodeString(GetLastError()); } Vcl::Forms::Application->MessageBox(blad.c_str(), L"Błąd", MB_ICONERROR | MB_OK); return false; } svc = OpenService( scm, SrvName.c_str(), SERVICE_ALL_ACCESS ); if( svc==NULL ){ retError = GetLastError(); if(retError == 1060) blad = "Usługa o podanej nazwie nie istnieje - kod błędu: 1060"; else blad = "Błąd deinstalacji usługi, kod błędu: " + UnicodeString(retError); Vcl::Forms::Application->MessageBox(blad.c_str(),L"Błąd", MB_ICONERROR | MB_OK); CloseServiceHandle(scm); return false; } ret = DeleteService(svc); if(!ret){ retError = GetLastError(); switch(retError){ case ERROR_ACCESS_DENIED: blad = "Brak uprawnień do menadżera usług"; break; case ERROR_INVALID_HANDLE: blad = "The specified handle is invalid."; break; case ERROR_SERVICE_MARKED_FOR_DELETE: blad = "The specified service has already been marked for deletion."; break; default: blad = "Nie udało się odinstalować usługi, kod błędu: " + UnicodeString(GetLastError()); } Vcl::Forms::Application->MessageBox(blad.c_str(), L"Błąd", MB_ICONERROR | MB_OK); } CloseServiceHandle(svc); CloseServiceHandle(scm); return ret; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if(DeinstallService(ServiceName->Text)) Vcl::Forms::Application->MessageBox(L"Usługa została odinstalowana.", L"Deinstalacja usługi", MB_ICONINFORMATION | MB_OK); } //---------------------------------------------------------------------------