【问题标题】:Launching .bat files on Windows with Adobe AIR NativeProcess, not supported?不支持在 Windows 上使用 Adob​​e AIR NativeProcess 启动 .bat 文件?
【发布时间】:2011-05-20 03:12:17
【问题描述】:

我可以在 Mac 上轻松启动“sh”文件,但是当我在 Windows 上尝试使用 bat 时,我得到了这个:

无法启动 NativeProcess。 '无法启动带有'.bat'扩展名的文件。'

【问题讨论】:

    标签: batch-file air


    【解决方案1】:

    将文件从 *.bat 重命名为 *.cmd ,它就像一个魅力。

    非常安全。

    【讨论】:

      【解决方案2】:

      出于安全原因,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 属性包含字符串“错误 #3219:无法启动 NativeProcess。”

      请尝试使用参数/c your-batch-file.bat 开头cmd.exe

      【讨论】:

      • 参数 /c 有什么作用?
      • 不知何故它对我不起作用。 var f:File = new File("C:\Windows\System32\cmd.exe");这给了我一个错误,它不是一个有效的可执行文件。而这个,var f:File = new File("cmd.exe"),那个参数是无效的。
      • 愚蠢的我,我忘了转义反斜杠。新文件(“C:\\Windows\\System32\\cmd.exe”)。这行得通。
      【解决方案3】:
      var batUrl:String = "outProtoCmd.bat";
      

      var file:File = new File(batUrl); file.openWithDefaultApplication();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-25
        • 1970-01-01
        • 2012-08-12
        • 1970-01-01
        • 2010-09-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多