disable security center

gui v1.3
qtkite 2 years ago
parent 761ed2b6ac
commit 7b97b9716e

@ -42,9 +42,9 @@ namespace dcontrol
CloseHandle(proc); CloseHandle(proc);
} }
// Stop or run the windefend service // TODO: create a single function
//
bool manage_windefend(bool enable) bool manage_security_service(bool enable, std::string service_name)
{ {
auto sc_manager = OpenSCManagerA(0, 0, SC_MANAGER_CONNECT); auto sc_manager = OpenSCManagerA(0, 0, SC_MANAGER_CONNECT);
@ -53,7 +53,7 @@ namespace dcontrol
auto service = OpenServiceA( auto service = OpenServiceA(
sc_manager, sc_manager,
"WinDefend", service_name.c_str(),
enable ? SERVICE_ALL_ACCESS : enable ? SERVICE_ALL_ACCESS :
(SERVICE_CHANGE_CONFIG | SERVICE_STOP | DELETE) (SERVICE_CHANGE_CONFIG | SERVICE_STOP | DELETE)
); );
@ -64,9 +64,6 @@ namespace dcontrol
return false; return false;
} }
// TODO: Add a better implementation
// https://docs.microsoft.com/en-us/windows/win32/services/starting-a-service
if (enable) if (enable)
{ {
// Change to auto-start // Change to auto-start
@ -78,14 +75,14 @@ namespace dcontrol
0, 0, 0, 0, 0, 0, 0 0, 0, 0, 0, 0, 0, 0
)) ))
{ {
throw std::runtime_error("Failed to modify windefend service" + std::to_string(GetLastError())); throw std::runtime_error("Failed to modify " + service_name + " " + std::to_string(GetLastError()));
return false; return false;
} }
// Start the service // Start the service
if (!StartServiceA(service, 0, NULL)) if (!StartServiceA(service, 0, NULL))
{ {
throw std::runtime_error("Failed to start service"); throw std::runtime_error("Failed to start " + service_name);
return false; return false;
} }
} }
@ -101,7 +98,7 @@ namespace dcontrol
return true; return true;
throw std::runtime_error( throw std::runtime_error(
"Failed to stop windefend service " + std::to_string(last_error) "Failed to stop " + service_name + " " + std::to_string(last_error)
); );
return false; return false;
} }
@ -116,7 +113,7 @@ namespace dcontrol
)) ))
{ {
throw std::runtime_error( throw std::runtime_error(
"Failed to modify windefend service" + std::to_string(GetLastError()) "Failed to modify " + service_name + " " + std::to_string(GetLastError())
); );
return false; return false;
@ -127,12 +124,24 @@ namespace dcontrol
Sleep(3000); Sleep(3000);
} }
CloseServiceHandle(service);
CloseServiceHandle(sc_manager);
return true; return true;
} }
// Stop or run security center (wscvc)
// The default value is autostart
//
bool manage_security_center(bool enable)
{
return manage_security_service(enable, "wscsvc");
}
// Stop or run the windefend service
//
bool manage_windefend(bool enable)
{
return manage_security_service(enable, "WinDefend");
}
// Disables window defender // Disables window defender
// //
bool disable_defender() bool disable_defender()
@ -318,6 +327,7 @@ namespace dcontrol
delete helper; delete helper;
manage_windefend(true); manage_windefend(true);
manage_security_center(true);
return true; return true;
} }

@ -31,4 +31,8 @@ namespace dcontrol
// Stop or run the windefend service // Stop or run the windefend service
// //
bool manage_windefend(bool enable); bool manage_windefend(bool enable);
// Stop or run the security center
//
bool manage_security_center(bool enable);
} }

@ -27,6 +27,7 @@ int main(int argc, char** argv)
{ {
dcontrol::kill_smartscreen(); dcontrol::kill_smartscreen();
dcontrol::manage_windefend(false); dcontrol::manage_windefend(false);
dcontrol::manage_security_center(false);
dcontrol::toggle_tamper(false); dcontrol::toggle_tamper(false);
printf(dcontrol::check_defender() ? printf(dcontrol::check_defender() ?

@ -6,4 +6,4 @@
#define DEFENDER_DISABLE 2 #define DEFENDER_DISABLE 2
#define DEFENDER_GUI 3 #define DEFENDER_GUI 3
#define DEFENDER_CONFIG DEFENDER_ENABLE #define DEFENDER_CONFIG DEFENDER_DISABLE

Loading…
Cancel
Save