Windows11 Version:24H2の環境で「COMコンポーネントはDISPID_NEWENUMのIDDispatch 呼び出しをサポートしていません」のエラーが発生する。
いつも使っているパソコンをWidnwos11 24H2にバージョンアップを行いました。
バージョンアップ後から、自分で作成したMSHTML/WebOCを利用したアプリケーションを実行すると下記のエラーが発生します。
「COMコンポーネントはDISPID_NEWENUMのIDDispatch 呼び出しをサポートしていません
COMオブジェクトをインターフェース System Collection IEnumerableにキャストできません」
原因ですが、Windows11の仕様のようです。
Windows11 24H2以降、MSHTML/WebOC ベースの呼び出しに対して JScriptが読み込まれるようです。
回避策としてポリシーの設定Script9Legacyを呼び込む設定を行いました。
■回避策
レジストリの値を設定することでエラーが解消されました。
(設定値)
Registry Hive HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
Registry Path Software\Policies\Microsoft\Internet Explorer\Main
Value Name JScriptReplacement
Value Type REG_DWORD
Value 0
■参考
レジストリを変更するスクリプトです。
管理者権限で実行します。
-----JScriptReplacemen.bat--
@echo off
REM 管理者権限で実行されているか確認
openfiles >nul 2>&1
if %errorlevel% NEQ 0 (
echo 管理者権限が必要です。管理者として実行してください。
pause
exit /b
)
REM レジストリキーのパスと値を設定
set "registryPath=HKLM\Software\Policies\Microsoft\Internet Explorer\Main"
set "valueName=JScriptReplacement"
set "valueData=0"
REM レジストリキーを作成(存在しない場合)
reg add "%registryPath%" /f
REM レジストリ値を設定
reg add "%registryPath%" /v "%valueName%" /d "%valueData%" /f
echo レジストリが更新されました。