Как изменить значения элементов BcdStore с помощью WMI?

В этой статье Msdn-BcdStore показано, как управлять хранилищем BCD с помощью WMI API.

Используя эту платформу, я попытался изменить элемент политики Nx загрузчика Boot. Согласно bcdedit /enum текущее значение политики Nx равно 1 (т.е. OptOut).

скрипт bcdedit-before

Приведенный ниже скрипт Powershell пытается установить для политики nx загрузчика в системном BcdStore значение AlwaysOff.

$store = (Invoke-WmiMethod -Path BcdStore -Namespace root\wmi -name openstore -argumentlist '').Store
$loaders = (Invoke-WmiMethod -Path $store.__RELPATH -Namespace root\wmi -name EnumerateObjects -argumentlist 270532611).Objects

#Picking up the default OS loader
$osloader = $loaders[1]
Invoke-WmiMethod -Path $osloader.__RELPATH -Namespace root\wmi -name SetIntegerElement -argumentlist 620757024,2

Вышеуказанный скрипт успешно выполнен без ошибок. Это означает, что он должен был изменить значение политики Nx на 2 (то есть AlwaysOff). Но мой bcdedit /enum по-прежнему показывает политику Nx как OptOut,

скрипт bcdedit-after

Я заметил DeleteElement Функция под BcdObject удаляет элемент. Но SetIntegerElement не устанавливает значение элемента.

bcdedit-после удаления

Я не могу получить то, что мне здесь не хватает. Пожалуйста, помогите мне с этим вопросом.

0 ответов

Другие вопросы по тегам