javascript执行外部程序的问题,比较有趣,谁来试试?(50分)

  • 主题发起人 主题发起人 峻祁连
  • 开始时间 开始时间

峻祁连

Unregistered / Unconfirmed
GUEST, unregistred user!

下面这样的代码保存成html或asp或aspx文件,在文件浏览器里直接用IE打开就能执行,而建立虚拟目录后在IE里用http://的URL方式打开就不会执行,谁能说明一下其中的原因?


-----------------------------------------------
<head>

</head>
<body>
<script language="JScript">
function fnShellExecuteJ()
{
var objShell = new ActiveXObject("Shell.Application");
objShell.ShellExecute("notepad.exe", "", "", "open", 1);
}
fnShellExecuteJ();
</script>
</body>
 
因为你执行了本机的程序了。
 
没有权限!
 
为什么不能执行本机程序,调用客户端安装的插件也是这个道理吧
 
IE一旦有这样的功能,你想想谁敢上网.即使用JS实现,遇到NOTRON之类的也会视为病毒
 
这是个ActiveX对象,因为是本地文件,所以默认的有权限执行该对象的方法
而作为web服务器,默认的是要提示或禁止的,这是ie的安全设置
理论上来说,如果做一个ActiveX对象,客户允许下载的话,你就可以在它机器上为所欲为了呵呵
 
我再来贴一个操作注册表的:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<SCRIPT LANGUAGE=vbscript>
<!--
function RunExe()

dim regVal,tmpStr,currentStr
on error resume next

regVal="HKEY_LOCAL_MACHINE/SOFTWARE/Adobe/Acrobat Reader/5.0/InstallPath/"

set regobj = CreateObject("Wscript.shell")

tmpStr=regObj.RegRead(regVal)

if Err.Description<>"" then
alert("对不起,您还没安装所要的程序或安装程序出错!")
else
alert(tmpStr)
end if
end function
//-->

</SCRIPT>
</HEAD>

<BODY onload="RunExe()">

</BODY>
</HTML>
 
多人接受答案了。
 
后退
顶部