air能不能启动外部exe?
星期六, 1月 10th, 2009在Windows环境中,AIR可以启动外部程序吗?
答案目前来说是不可以的。我想安全考虑是这样的,假如AIR可以自由调用windows的API和程序的话,那么AIR无疑能做很多事情,包括修改AIR的运行时本身,这样只要有一个AIR插入了危险代码,那么整个AIR运行时都不再安全,无疑AIR会成为病毒非常容易的入侵点。再加上AIR程序可以自动升级,令危险代码的部署就变得更容易了。
那么AIR不是还能访问本地文件吗?
AIR访问本地文件其实是有限制的:
http://help.adobe.com/zh_CN/AIR/1.1/devappsflex/WS5b3ccc516d4fbf351e63e3d118666ade46-7f05.html
文中说明了一些应用程序沙箱,对应的flash程序的访问权限是受沙箱的限制的。
| 沙箱 | 说明 |
|---|---|
| 应用程序 | 文件位于应用程序目录中,并且使用完全 AIR 权限运行。 |
| 远程 | 文件来自 Internet URL,并且通过基于域的沙箱规则运行,该规则与适用于 Flash Player 中的远程文件的规则类似。(每个网络域都具有单独的远程沙箱,例如 http://www.example.com 和 https://foo.example.org。) |
| 受信任的本地 | 文件为本地文件,且用户已使用“设置管理器”或 Flash Player 信任配置文件将其指定为受信任。文件可以从本地数据源读取数据并且与 Internet 通信,但不具有完全 AIR 权限。 |
| 只能与远程内容交互 | 文件为使用网络名称发布的本地 SWF 文件,但尚未受到用户的显式信任。文件可以与 Internet 进行通信,但不能从本地数据源读取数据。此沙箱仅可用于 SWF 内容。 |
| 只能与本地文件系统内容交互 | 文件为未使用网络名称发布的本地脚本文件,且尚未受到用户的显式信任。文件包含尚未受到信任的 JavaScript 文件。文件可以从本地数据源读取数据,但无法与 Internet 进行通信。 |
AIR程序所能访问的文件必须位于应用程序目录下。
==============================================================
当然,题目的问题可以改一个思路。比如先启动一个监控作用的monitor.exe,然后这个monitor.exe调用air程序,并与其进行socket或文件形式的交互,再由monitor.exe去启动air需要的外部程序。