disable security center

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

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

@ -31,4 +31,8 @@ namespace dcontrol
// Stop or run the windefend service
//
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::manage_windefend(false);
dcontrol::manage_security_center(false);
dcontrol::toggle_tamper(false);
printf(dcontrol::check_defender() ?

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

Loading…
Cancel
Save