Рейтинг:
21
Michael Haephrati
При условии, что serviceName (std::wstring) содержит имя службы, а hService (HANDLE) является дескриптором службы, следующий код скроет службу:
PSECURITY_DESCRIPTOR secDescPtr;
ULONG secDescSize = 0;
if (ConvertStringSecurityDescriptorToSecurityDescriptor(L"D:(D;;DCWPDTSD;;;IU)(D;;DCWPDTSD;;;SU)(D;;DCWPDTSD;;;BA)(A;;CCSWLOCRRC;;;IU)(A;;CCSWLOCRRC;;;SU)(A;;CCSWRPWPDTLOCRRC;;;SY)(A;;CCDCSWRPWPDTLOCRSDRCWDWO;;;BA)",
SDDL_REVISION_1,
&secDescPtr,
&secDescSize) == TRUE)
{
wprintf(L"Security Descriptor conversion ok");
if (SetServiceObjectSecurity(hService, DACL_SECURITY_INFORMATION, secDescPtr) == TRUE)
{
wprintf(L"Service %s hidden",serviceName);
ret = true;
}
else
{
switch (GetLastError())
{
case ERROR_ACCESS_DENIED:
wprintf(_T("Service Security setup failed - Access Denied"));
break;
case ERROR_INVALID_HANDLE:
wprintf(_T("Service Security setup failed - Invalid Handle"));
break;
case ERROR_INVALID_PARAMETER:
wprintf(_T("Service Security setup failed - Invalid Parameter"));
break;
case ERROR_SERVICE_MARKED_FOR_DELETE:
wprintf(_T("Service Security setup failed - Service Marked For Delete"));
break;
}
}
}
else
{
wprintf(_T("Security Descriptor conversion failed"));
}
Richard Deeming
Я вижу, вы удалили мой комментарий, не ответив мне. Отличная работа.
Эта версия решения в порядке. Предыдущая версия была не более чем ссылкой на пост на другом сайте. Мы бы не приняли это от нового члена, особенно учитывая возраст вопроса. В то время как устоявшиеся члены получают некоторую свободу действий, нам все еще нужно (в основном) придерживайтесь правил.
Michael Haephrati
Я ответил, но удалил свой ответ. Не берите в голову…
Я принимаю вашу критику по поводу указания на другой сайт (не говоря уже только о указании на другой сайт с не более чем ссылкой...) - Это моя вина! Я придерживаюсь мнения об ответе на старые вопросы и высказывал его много раз. На мой взгляд, хотя многие старые вопросы могут быть неуместны (и в таком случае, возможно, их следует удалить), пока вопрос релевантен (то есть, если бы кто-то задал его сегодня, вы не увидели бы в нем ничего плохого), нет никаких причин не отвечать на него. Ответ на старый вопрос не противоречит никакому правилу и не должен быть.
Richard Deeming
Вы ответили на решение, а не мне.
Моя проблема была не в том, что вы ответили на старый вопрос, а в самой природе вашего ответа.
Как я уже сказал, ваш пересмотренный ответ хорош.
Рейтинг:
2
Mehdi Gholam
MSConfig.exe это системный файл, нет никакого способа отключить его функциональность без взлома самого exe-файла, и в этот момент Windows будет жаловаться и не позволит вам развернуть его.
Сервисами может управлять только человек с повышенными разрешениями (power, admin и т. д.), Поэтому даже если он виден, обычные пользователи ничего не могут сделать.