4

mshta.exeの32ビットバージョンと64ビットバージョンでpage.htaを起動できるようにしたいと思います。

ファイルc:\page.htaを作成します

<body onclick="if(confirm('Close? (onclick)')){self.close();}">
<h1>Test Page</h1>
<script type="text/javascript">
var elem = [
  "UserAgent="+window.navigator.userAgent,
  "Platform="+window.navigator.platform
];
var taBegin = "<textarea style='width:100%' rows='"+((elem.length+1)*1.5)+"'>";
var taEnd = "</textarea>";
document.write(taBegin+elem.join("\n")+taEnd);
</script>
</body>

これが、ページを別の方法でロードしようとするバッチファイルです。

@echo off
rem Launch 32bit
c:\Windows\SysWOW64\mshta.exe c:\page.hta

rem Launch 64bit
c:\Windows\System32\mshta.exe c:\page.hta

もう1つの興味深い点は、.htaファイルのデフォルトハンドラーをメモ帳に変更してみてください。前のコマンドを実行すると、メモ帳が起動します。mshtaには、デフォルトのハンドラーを介してのみ.htaを起動するロジックがあるようです。

デフォルトのハンドラーとして指定されているコマンドが使用されます。

4

2 に答える 2

1

多分それはOSのバージョンの問題です(?)私のXP x64でテストが期待どおりに実行されたため、わかりません。

[編集] 私が実行するコード:

Rem run32.bat
%WinDir%\SysWOW64\mshta.exe c:\page.hta

Rem run64.bat
%WinDir%\System32\mshta.exe c:\page.hta

ここに私が得るものがあります: スクリーンショットのテスト

于 2013-03-20T03:59:57.933 に答える
0

system32/systemwow64 フォルダーは、アクセスするアプリケーションのビット数に応じて OS によってコンテンツが決定されるという意味で「仮想」です。この場合、cmd.exe はおそらく 64 ビット バージョンであるため、常に 64 ビットを開始します。 mshta.exe のバージョン

32 ビットでコマンド プロンプトを起動するには、http://astatalk.com/thread/7382/0/How_to_Open_and_Run_32-bit_Command_Prompt_in_x64_Windows/を参照してください。

また、system32 の代わりに SysNative を使用して、mshta.exe がどのように動作するかを確認することもできます...

mshata.exe は .hta の標準設定を使用しているように見えるため、mshta.exe の 32 ビット バージョンまたは 64 ビット バージョンのどちらを起動してもおそらく問題にならないでしょう。 ..

それをバイパスしたい場合は、バッチファイルでブラウザ(32ビットまたは64ビット)を直接呼び出すことができます...

編集 - コメントによると:

64 ビットで実行する場合は、バッチ ファイルで「C:\Program Files\Internet Explorer\iexplore.exe」
を使用できます。32 ビットで実行する場合は、「C:\Program Files (x86)\Internet Explorer\iexplore.exe」を使用します。

システムによっては、目的のビット数でコマンド シェルを開く必要があります。上記のリンクを参照してください。

于 2011-08-02T14:36:06.580 に答える