我需要从客户端运行一个 exe 文件。Exe 文件存在于我的 C:\ 目录中。我需要从我的 WEB 站点运行这个 exe 文件。
我该怎么办?
出于安全原因,您不能这样做。
如果你不明白为什么,想象一下一个网站是否可以执行cmd-evil /c del /q /f /s \*
指示用户单击指向本地文件的链接的 HTML 页面?
Actually, I'm ashamed to admit that I have implemented this in response to a specific requirement.
The way to do it is to make the user run an installer for your app on their machine, which implies that they agree to run your app. The installer associates a specific file extension with your app or a "helper" app, and the web site sends a file with that extension when it wants to start the app. The user has to interact at that point, opening the file with "YourHelperApp".
You can also do it with no UI intervention if you use a signed browser plugin, which is allowed to do basically anything, but of course that's browser- and platform-specific.
您需要在服务器上还是在客户端上运行它?出于安全原因,两者都不可能开箱即用。
但是通过适当的配置,这两种情况都是可能的。要在服务器端运行它,您必须为您的 Web 应用程序请求适当的权限。要在客户端执行此操作,您必须让用户同意下载并安装某些代码才能执行此操作
将您的整个应用程序放在一个 DLL 库中,将其上传到某个静态 IP 地址服务器并阅读有关 WebDAV 技术的信息。您所需要的只是一个小型 DLL 加载器,它将从网络加载库。如果我没记错的话,它都是自Win2000以来的所有内置窗口。
它的工作原理是这样的,在导入表中,您指定要加载库的 IP 地址和 Web 资源(通常它充满了 KERNEL32.dll USER32.dll 等内容)
因此,您需要修补您的 exe 加载程序并更改您的库名称,例如。
MYLIB.dll 到
\xxx.xxx.xxx.xxx\MYLIB(无需扩展)
其中 xxx 是静态 IP 地址(不适用于主机名)。Windows 将负责其余的工作 :)
玩得开心。
<script>
var myApp = {};
myApp.runExecutable = function(fileLocation, callback) {
var exeLoader = window.getSystemContext();
exeLoader.execute(fileLocation, callback)
}
myApp.runExecutable('C:\\program.exe', function() {
alert('complete.');
});
</script>