Стирание Реестра Улей - PullRequest
       38

Стирание Реестра Улей

0 голосов
/ 04 сентября 2018

Я пытался стереть реестр Hive.

К счастью, я нашел этот форум (http://geekswithblogs.net/BruceEitman/archive/2009/04/28/windows-ce-cleaning-the-registry-hive.aspx)), который говорит мне, что это можно сделать, добавив новую функциональность в kernelIoControl. Я попытался вызвать его и отладить в одном из драйверов и обнаружил, что при Я вызвал kernelIoControl, он привел меня к функции XXX_KernelIoControl в C: \ WINCE800 \ private \ winceos \ coreos \ core \ thunks \ tkfuncs.cpp. В конце функции вызывается KernelIoControl, и у меня нет доступа к исходный код больше (взял меня в ассемблерный код).

На форуме предоставлен пример кода для установки флага для удаления реестра кустов (см. Код ниже).

DWORD *pFlags = (DWORD *)lpInBuf;
BOOL *pClean = (BOOL *)lpOutBuf;

*pfClean = FALSE;

if((*pdwFlags == HIVECLEANFLAG_SYSTEM) || (*pdwFlags == HIVECLEANFLAG_USERS))
{
                if(CheckSharedMemoryHiveDeleteFlag())
                {
                                *pClean = TRUE;
                }
}
return TRUE;

Что я не понимаю, так это то, что нигде не могу найти * pclean (при условии, что имя переменной правильное). Кроме того, Microsoft предоставляет ту же информацию (https://msdn.microsoft.com/pt-br/windows/desktop/ms904450?f=255&MSPPError=-2147217396), в которой все еще используется * pclean. Поэтому в скорлупе ореха я нашел способ установить флаг для удаления улья.

1 Ответ

0 голосов
/ 05 сентября 2018

pClean - выходной параметр вызова IoControl, он получается путем наведения указателя на BOOL во 2-й строке вашего кода. Установив для него значение ИСТИНА (и вернув значение ИСТИНА из подпрограммы IoControl), вы скажете системе отказаться от содержимого файлов куста.

...