0

我想从 .html 文件中运行 .hta 文件,而浏览器要求下载它。它应该在浏览器的 html 页面中的 iframe 中运行。我正在使用的代码是这个-

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<iframe src="app.hta">
</body>
</html>

问题是浏览器要求下载 hta 文件,但它希望它应该自动运行。

hta 文件代码是这样的——

<html>
<head>
    <title>Application Executer</title>
    <HTA:APPLICATION ID="oMyApp" 
        APPLICATIONNAME="Application Executer" 
        BORDER="no"
        CAPTION="no"
        SHOWINTASKBAR="yes"
        SINGLEINSTANCE="yes"
        SYSMENU="yes"
        SCROLL="no"
        WINDOWSTATE="normal">
    <script type="text/javascript" language="javascript">
        function RunFile() {
        WshShell = new ActiveXObject("WScript.Shell");
        WshShell.Run("c:/app.exe", 1, false);
        }
    </script>
</head>
<body>
    <input type="button" value="Run Notepad" onclick="RunFile();"/>
</body>
</html>
4

2 回答 2

2

实际上,即使主应用程序是 HTA ,您也无法在其中打开HTA 。iframeHTA 有自己的操作系统窗口,就像浏览器或任何 .exe 一样。

您可以做的是将您的脚本放到一个常规的 html 文件中。根据 IE 的安全设置,它执行代码,或要求用户允许执行,或抛出错误。

另请注意,这ActiveX仅适用于 Internet Explorer。就像 Dark Falcon 所说的那样,允许ActiveX从 Web 执行将是一个巨大的安全风险。因此,不建议在公共网站上尝试做这些事情。

如果这是一个 Intranet 应用程序,您可以将主应用程序更改为 HTA。然后,您可以将Run Notepad按钮(和脚本)添加到主应用程序,或添加到iframeapplication=yes设置的 . 受信任的站点 (html) 也可以在ActiveX没有提示或错误的情况下运行 s。

于 2013-05-25T07:06:08.517 回答
0

HTA 不能在浏览器下运行。它们在一个名为mshta. 允许在浏览器框架中打开 HTA 会带来问题,因为 HTA 比普通网页具有更高的权限。

于 2013-05-24T16:28:01.420 回答