我可以在Mac上轻松启动“sh”文件,但是当我在Windows上使用相同的蝙蝠时,我得到以下结果:使用Adobe AIR NativeProcess在Windows上启动.bat文件,不受支持?
NativeProcess无法启动。 '带'.bat'扩展名的文件无法启动。'
我可以在Mac上轻松启动“sh”文件,但是当我在Windows上使用相同的蝙蝠时,我得到以下结果:使用Adobe AIR NativeProcess在Windows上启动.bat文件,不受支持?
NativeProcess无法启动。 '带'.bat'扩展名的文件无法启动。'
出于安全原因,you can't do that。
Windows上的AIR不允许您直接运行.bat文件。 Windows .bat文件由命令解释程序应用程序(cmd.exe)执行。当您调用.bat文件时,该命令应用程序可以将传递给该命令的参数解释为要启动的其他应用程序。恶意注入参数字符串中的额外字符可能导致cmd.exe执行有害或不安全的应用程序。例如,如果没有正确的数据验证,您的AIR应用程序可能会调用myBat.bat myArguments c:/evil.exe。除了运行批处理文件之外,命令应用程序还会启动evil.exe应用程序。
如果使用.bat文件调用start()方法,则NativeProcess对象会引发异常。 Error对象的message属性包含字符串“Error#3219:NativeProcess无法启动。”
而是尝试从cmd.exe
开始,参数/c your-batch-file.bat
。
将文件从* .bat重命名为* .cmd,它的工作原理与魅力一样。
这么多的安全。
var batUrl:String = "outProtoCmd.bat";
var file:File = new File(batUrl); file.openWithDefaultApplication();
参数/ c做了什么? – Ska 2011-05-20 13:42:09
@Ska:它运行一个命令并关闭cmd。参见'cmd /?'。 – SLaks 2011-05-20 13:49:05
不知何故,它不适合我。 var f:File = new File(“C:\ Windows \ System32 \ cmd.exe”);这给我错误,它不是一个有效的可执行文件。而这个,var f:File = new File(“cmd.exe”),那个参数是无效的。 – Ska 2011-05-20 13:56:47