WSH(JScript)で HTMLFileオブジェクトの document.write がエラーになります

nya nya 20 評価のポイント
2025-08-22T02:41:49.5+00:00

2025年8月の WindowsUpdate で mshtml.dll のバージョンが 11.0.26100.4652 に上がった端末で以下のスクリプトがエラーとなります。
var objDoc = new ActiveXObject("HTMLFile");

objDoc.write('<html><body><div id="id">hello document.write!</div></body></html>');

WScript.Echo(objDoc.documentElement.outerHTML);

以前の mshtml.dll バージョン 11.0.22621.5262 では問題は起きません。

これは仕様でしょうか?あるいは不具合で修正される可能性があるのでしょうか?

開発者テクノロジ | Windows Presentation Foundation

質問作成者が受け入れた回答
motosan 3,570 評価のポイント
2025-08-26T07:39:15.21+00:00

私の環境では、mshta.dll のバージョンでは 11.0.26100.4768 です。

下記のコードを実行してもエラーにはなりません。

test.wsf

<?XML version="1.0" encoding="UTF-8" ?>
<package>
  <job id="run">                                            <!-- FileSystemObject 等の文字定数を使用する場合に定義する -->
    <reference object="Scripting.FileSystemObject"/>      <!-- FileSystemObject を使用する場合 -->
    <reference object="Scripting.Dictionary"/>            <!-- Dictionary       を使用する場合 -->
    <reference object="WbemScripting.SWbemLocator"/>      <!-- Wbem             を使用する場合 -->
    <script language="JScript"><![CDATA[
      var objDoc = new ActiveXObject("HTMLFile");
      objDoc.write('<html><body><div id="id">hello document.write!</div></body></html>');
      WScript.Echo(objDoc.documentElement.outerHTML);
    ]]></script>
  </job>
</package>

※ 2025/8/28 下記のように修正しました。

  1. nya nya さんのコメントを参考に先頭に xml タグの追加
  2.  test.wsfを UTF-8 に変更
  3.  script を CDATAセクション(<![CDATA[ ...]]>)で囲みました。

test.wsf の実行結果です。

image

.wsf でなく .js で作成すると質問と同じエラーになります。

test.js

var objDoc = new ActiveXObject("HTMLFile");
objDoc.write('<html><body><div id="id">hello document.write!</div></body></html>');
WScript.Echo(objDoc.documentElement.outerHTML);

test.js の実行結果です。

_DESKTOP-0CTIA1V_20250827_013241_クリップボード

mshta.dll のバージョンがアップしたから結果が違うのでしょうか?

再度ご確認ください。

追記)

test.js のコードと結果の画面を追記しました。

質問には WSH とあるので、 wsf ファイルのことだと思っていたのですが、以前は test.js でも正しく動作していたのでしょうか?

この回答は役に立ちましたか?


0 件の追加の回答

並べ替え方法: 新しい順

お客様の回答

質問作成者は回答に "承認済み"、モデレーターは "推奨" とマークできます。これにより、ユーザーは作成者の問題が回答によって解決したことを把握できます。