Есть другой способ, который работает без правки реестра. Случайно нашёл статью
HOW TO: Script Compatibility Layers in Windows XP и там обнаружил, что можно выставить готовый слой совместимости, используя специальную переменную __COMPAT_LAYER. Проверил на Windows 7, присвоив переменной значение RUNASINVOKER, - также работает.
Вот пример bat файла для запуска программы с включенным исправлением RUNASINVOKER
Код:

set __COMPAT_LAYER=RUNASINVOKER
start "" myprogram.exe
Также переправил свой первый вариант контекстного меню Force Run As Invoker (UAC) с использованием переменной, вместо правки реестра.
Код:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Force Run As Invoker (UAC)"
[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""