2011-03-16 96 views
3

我希望能够在32位和64位版本的mshta.exe中启动page.hta。执行32位和64位mshta.exe(绕过默认处理程序)

创建文件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。

无论使用何种命令,都使用默认处理程序。

+0

没有解答:( – TJR 2011-08-02 14:17:03

回答

0

system32/systemwow64文件夹是“虚拟”的,因为它们的内容由操作系统决定,取决于访问应用程序的位数 - 在您的情况下,cmd.exe可能是64位版本,因此它始终会启动在mshta.exe

的启动在32位命令提示符下键入64位版本中看到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所以它可能不会有问题,无论你启动的32位或64位版本的mshta.exe - 你可以尝试通过将.hta与你的浏览器的32位sersion相关联...

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

编辑 - 按评论:

对于64位执行,你可以使用“C: \ Program Files \ Internet Explorer \ iexplore.exe“,并使用
32位执行您使用的”C:\ Program Files(x86)\ Internet Explorer \ iex plore.exe”。

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

+0

你能就如何绕过默认的处理更具体的 – TJR 2011-08-06 15:59:16

+0

看到我上面的编辑 – Yahia 2011-08-06 17:23:51

+0

我很困惑你为什么引入iexplore.exe?我从来没有提到iexplore.exe的问题 – TJR 2011-08-08 14:32:34

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

+0

因此,从相同的64位操作系统,您是否使用批处理文件启动两个mshta.exe的hta? – TJR 2013-03-24 23:30:45

+0

是的,我使用了批处理文件,它使用'mshta.exe'(来自'SysWOW64'和'System32')运行.hta。 – 2013-03-24 23:40:08

+0

这是命令shell _'cmd.exe'为64 bit_。如果运行'cmd.exe'_('%WinDir%\ SysWOW64 \ cmd.exe')的_32位版本,那么在这两种情况下,将启动32位版本的'mshta.exe',页面将显示'平台= Win32'。 – 2013-03-29 10:23:22