WUSA катастрофический сбой 0x8000ffff при вызове из системы () VStack Overflow

Я пытаюсь сделать программу удаления Центра обновления Windows на C ++, но всякий раз, когда я пытаюсь вызвать wusa, она завершается катастрофическим отказом 0x80000ffff. Я вызываю ту же команду в командной строке, и она отлично работает. Как это исправить?

Вот функция, которую я использую для вызова wusa:

system("wusa /uninstall /kb:2511455");

1

Решение

Я выяснил, как решить эту проблему, и в будущем я опубликую свое решение для тех, у кого такая же проблема. Команда system () выполняла 32-битный исполняемый файл внутри% windir% \ SysWoW64 \ вместо собственной 64-битной версии. Для решения этой проблемы мне пришлось использовать следующее:

PVOID OldValue = NULL;
if( Wow64DisableWow64FsRedirection(&OldValue) )
{
//  Anything in this block uses the system native files and not the WoW64 ones
// put native WoW64 code here
system("wusa /uninstall /kb:2511455");
//system("wusa /?"); // use this for testing

//  Immediately re-enable redirection. Note that any resources
//  associated with OldValue are cleaned up by this call.
if ( FALSE == Wow64RevertWow64FsRedirection(OldValue) )
{
//  Failure to re-enable redirection should be considered
//  a criticial failure and execution aborted.
return 0;
}
}
0

Другие решения


По вопросам рекламы [email protected]