Отключение и включение выключения по требованию

#winapi #shutdown #group-policy

#winapi #завершение работы #групповая политика

Вопрос:

Я хочу отключить или включить Shutdown , Restart Hibernate и Sleep опции в меню «Пуск» Windows XP / 7 программно и по требованию (немедленно).

Использование gpedit.msc инструмента и установка Remove and prevent access to Shut Down command значения Enabled / Disabled сразу влияет на меню «Пуск», и эти параметры отображаются / скрыты, как я хочу. Но я не могу написать программу для этого.

Я нашел одно программное решение, которое создает NoAction переменную со значением 1 , помещенным в этот путь реестра:

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer

Но это не отключает Shutdown / etc немедленно и влияет после explorer.exe перезапуска.

Я также пробовал уведомлять explorer.exe с помощью RefreshPolicyEx, RefreshPolicy, SHChangeNotify и широковещательной рассылки WM_SETTINGCHANGE и WM_WININICHANGE , но ни один из них не информировал Explorer о необходимости повторного чтения реестра / политик.

Я предполагаю, что использование API групповой политики было бы хорошим решением, но не знаю, как его использовать. Можете ли вы дать мне простой код для применения локальной групповой политики с помощью API групповой политики?

Или вы знаете какой-либо другой способ включить / отключить shutdown / etc немедленно и программно?

Примечание: Целевыми платформами являются Windows XP и Windows 7