执行32位和64位mshta.exe(绕过默认处理程序)

时间:2011-03-16 20:12:14

标签: hta win64

我希望能够在32位和64位版本的mshta.exe中启动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

另一个有趣的事情,尝试将默认处理程序更改为.hta文件的记事本。如果执行上一个命令,则启动记事本。似乎mshta有一些逻辑只能通过默认处理程序启动.hta。

指定了什么命令,因为使用了默认处理程序。

2 个答案:

答案 0 :(得分:1)

也许这是操作系统版本问题(?)我无法分辨,因为您的测试在XP x64上按预期运行。

[编辑]我运行的代码:

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

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

这是我得到的: test screenshot

答案 1 :(得分:0)

system32 / systemwow64文件夹是“虚拟的”,因为它们的内容由操作系统决定,具体取决于访问应用程序的位数 - 在您的情况下,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/

它也可以帮助使用SysNative而不是system32,看看mshta.exe如何起作用......

mshata.exe似乎只是使用.hta的标准设置,因此无论你是启动32位还是64位版本的mshta.exe都可能无关紧要 - 你可以尝试将.hta与32位版本联系起来你的浏览器......

如果您想绕过它,那么您可以直接在批处理文件中调用浏览器(32位或64位)......

编辑 - 根据评论:

对于64位执行,您可以在批处理文件中使用“C:\ Program Files \ Internet Explorer \ iexplore.exe”和
对于32位执行,您使用“C:\ Program Files(x86)\ Internet Explorer \ iexplore.exe”。

根据您的系统,您需要打开具有所需位数的命令shell - 请参阅上面的链接。