Maybe resurrecting something very old here. But I've got this working for me with upgraded Windows 10 machines.
Note: I only use the Start Menu component from Classic shell, nothing else.
Running the below as a startup script on computers through a GPO.
Code:
@echo off
rem * --------------------------------------------------------------------------
SETLOCAL ENABLEDELAYEDEXPANSION
if Not Exist "%systemRoot%\System32\StartMenuHelper64.dll" (
echo * No Classic Shell found
goto :eof
)
set valCurrentBuild=
set valCalcCurrentBuild=
set valClassicWinVersion=
rem 10240 1507 Threshold 1
rem 10586 1511 November Update
rem 14393 1607 Anniversary Update
rem 15063 1703 Creators Update
rem 16299 1709 Fall Creators Update
rem xxxxx 1803 Redstone 4
rem * Windows build
for /f "tokens=1,2,3" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" ^| find "CurrentBuild"') do set valCurrentBuild=%%k
echo * Windows Build %valCurrentBuild%
set /a valCalcCurrentBuild=16777216*10+%valCurrentBuild%
rem * Classic Shell check
for /f "tokens=1,2,3" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\IvoSoft\ClassicShell" ^| find "WinVersion"') do set /a valClassicWinVersion=%%k
if Not Defined valClassicWinVersion (
echo * No Classic shell WinVersion number found
goto :eof
)
echo * Caclulated vaule for ClassicShell %valCalcCurrentBuild%
echo * Registry value for ClassicShell %valClassicWinVersion%
rem * Fix Classic Shell registry value
if %valCalcCurrentBuild% GTR %valClassicWinVersion% (
echo * New value to HKEY_LOCAL_MACHINE\SOFTWARE\IvoSoft\ClassicShell\WinVersion = %valCalcCurrentBuild%
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\IvoSoft\ClassicShell" /v "WinVersion" /t REG_DWORD /d %valCalcCurrentBuild% /f
regsvr32 /s %SystemRoot%\System32\StartMenuHelper64.dll
) else (
echo * Classic Shell WinVersion is OK.
)
rem * --------------------------------------------------------------------------