Swift 在沙盒模式下执行命令行命令

2024-03-17

目前我正在尝试接触 Swift 编程。我尝试从我的内部执行命令行命令macOS Swift 应用程序。没有将我的应用程序设置为沙箱,一切都工作正常。但由于我激活了沙箱,该命令将不再起作用,但不会抛出任何错误并以状态代码终止0.

所以最简单的用例是开始VSCode从我的申请中。

负责执行 shell 命令的方法如下:

 func executeUserCommand(command: String, args: [String]?) -> Int32{
        let task = Process()
        task.launchPath = "/usr/local/bin/" + command
        task.arguments = args
        task.launch()
        task.waitUntilExit()
        return task.terminationStatus
    }
}

所以如果我想开始VSCode I call executeUserCommand("code", ["."])用于打开VSCode在当前目录中。

这工作正常,直到我启用App Sandbox在 Xcode 中。我清理并重建应用程序,但现在VSCode根本没有启动,但终止状态是0。我很确定沙箱限制了对/usr/local/bin目录。

有什么方法可以让我的应用程序仅访问此特定文件夹吗?这样用户就可以授予我的应用程序对该文件夹的访问权限一次,然后应用程序就可以访问该文件夹,即使在应用程序重新启动后也是如此?

提前致谢


是的,我已经这么认为了,但我在考虑是否可以明确要求用户向应用程序授予此特定文件夹的权限

你的思考方向是正确的。显然,如果沙箱应用程序无法访问文件和文件夹,它们将毫无用处,而它们这样做的关键是用户授予它们权限。此权限是使用标准打开和保存对话框授予的,当用户选择文件/文件夹时,应用程序将被授予读/写/创建它的权限。

需要访问特定文件/文件夹?自定义打开的对话框以引导用户选择特定的文件/文件夹,并检查结果以确保他们有 - 当他们选择不这样做时处理情况。

希望您的应用程序在启动时保留用户授予的对文件/文件夹的访问权限?然后你需要创建并存储一个安全范围书签.

是时候做一些阅读了,如果你遇到困难,提出一个新问题,毫无疑问有人会帮助你。请记住展示您发现的内容、您编写的代码等。

HTH

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 在沙盒模式下执行命令行命令 的相关文章

随机推荐

  • 如何检查字符串是否只包含大写字母或小写字母?

    当且仅当 s 中至少有一个字母字符且 s 中的字母字符全部大写或全部小写时 才返回 True def upper lower s str gt bool gt gt gt upper lower abc True gt gt gt uppe
  • 如何在 Xampp 安装的 Windows 上的 Apache 中禁用 SSLv3

    我正在尝试在 Apache 中禁用 SSLv3 该 Apache 是通过 xampp 安装在 Windows 上的 但我很难弄清楚如何做 有人告诉我我需要添加 SSLProtocol All SSLv2 SSLv3 到我的 ssl 配置文件
  • Haskell 函数名称中允许使用哪些字符?

    函数的有效名称是什么 Examples works let x x x let x x x doesn t work let x x x let x x x 我不确定 但我的预感是 Haskell 不允许 Unicode 函数名称 是吗 U
  • 如何从pairwise.t.test获取df和t值?

    有没有办法从a中获取t值和dfpairwise t test对于相关数据 Example data lt c 2 3 2 2 5 2 4 2 4 3 4 2 time lt c 1 1 1 1 2 2 2 2 3 3 3 3 pairwis
  • 如何在 .COM 可执行文件中以相反顺序打印字符串?

    我刚刚开始学习汇编语言 我正在尝试以相反的顺序打印 hello world 这意味着 dlrow olleh 问题是我只得到第一个字母作为输出 并且顺序仍然相同 没有任何变化 作为一个新手 很多事情对我来说都是未知的 我犯了很多错误 由于缺
  • keytool如何保护密钥?

    当您使用 Java Keytool 实用程序构建密钥存储时 如何保护密钥 我通读了文档 我意识到每个私钥都有一个密钥密码 然后商店有一个商店密码 但是使用什么机制来保护数据呢 它是加密密码吗 如果是的话 算法是什么 我特别关注 keytoo
  • 即使我完全信任,WebPermission 异常

    我正在尝试执行我认为简单的 HttpWebRequest 代码位于 dll 深处 因此我无法提供小代码片段 但它应该相对简单 但我遇到了安全异常 System Security SecurityException Request for t
  • 如何解决客户端-服务器应用程序中的无状态问题?

    我读过一些有关创建无状态网站的书籍 也读过一些有关有状态客户端应用程序的书籍 但是当您必须将两者结合起来时 就会出现很多复杂性 我们有一个 Flex 应用程序 需要通过 NET 服务将数据保存到数据库中 需要记住的事情是 并发 乐观 悲观
  • Android:通过套接字接收到的图像已损坏

    嗨 问题是 服务器正确地将图像发送到客户端 我认为 从客户端接收到的文件与服务器电话上存在的文件大小相同 因此我猜每个字节都已传输 但图像仍然不可见 服务器和客户端都是安卓手机 预先感谢我希望你能帮助我 服务器代码 public class
  • 使用 catimg 并排显示两个内容(就像在 neofetch 中一样)

    我正在尝试使用 bash 创建类似 neofetch 的东西 我想在右侧显示一张图像和一张 ASCII 艺术图 使用 cat 当我对某些机器进行 ssh 时 我想将其用作登录欢迎屏幕 所以我能够通过以下方式展示 ascii 艺术 cat l
  • 将对象附加到序列化文件

    假设您有一些 AppendObjectOutputStream 类 它是一个 ObjectOutputStream 它重写了 writeStreamHeader 如下所示 Override public void writeStreamHe
  • ObjectContext.Refresh()?

    如何从数据存储中更新所有脏实体 并将其更改后的值重置为原始存储值 方法对象上下文刷新 http msdn microsoft com en us library bb503718 aspx需要将要刷新的实体作为参数 以下通常有效 Conte
  • 编译器的“-O0”选项和“-Og”选项有什么区别?

    当我想要调试 C 或 C 程序时 我被教导使用 O0关闭优化 以及 ggdb将符号插入到为使用 GNU 而优化的可执行文件中gdb调试器 我使用它 或者 你可以使用 glldb对于 LLVM clang 来说lldb调试器 或者只是 g对于
  • 使用 xcodebuild 命令行使用 PROVISIONING_PROFILE 签名应用程序失败

    我尝试使用 Xcode 签署我的应用程序命令行 Running xcodebuild命令行开启MyApp xcodeproj like so xcodebuild project MyApp xcodeproj target MyApp s
  • 如何在 RSpec Expect 语法中模拟类方法?

    我对如何使用 new 模拟类方法感到困惑expect句法 这有效 Facebook should receive profile with token and return name gt Hello id gt 14314141 emai
  • 为什么带有几个按钮的基本 UIScrollView 不会滚动?

    为什么带有几个按钮的基本 UIScrollView 不会滚动 所以我所做的就是 创建基于视图的 iPhone 应用程序 将 UIScrollView 拖入主控制器 xib 文件中 滚动视图现在作为 IB 中 View 的子视图 在 IB 中
  • Laravel old() 不工作

    Form open array route gt posts store data parsley validate gt Form label title Title Form text title old title array cla
  • 使用 API Gateway 保护云功能

    我的目标是防止用户使用 API 密钥和 API 网关访问我的云函数端点 我已经成功部署了API网关 但是 每个云功能的原始端点仍然存在并且可供公众访问 我希望将云功能端点设为私有 同时将 api 网关端点设为公共 但我不确定如何实现这一点
  • 处理 Julia 中 kwargs 的类型

    我该如何使用kwargs在 Julia 函数中并声明其类型以提高速度 function f x Float64 kwargs kwargs Dict kwargs if haskey kwargs c c Float64 kwargs c
  • Swift 在沙盒模式下执行命令行命令

    目前我正在尝试接触 Swift 编程 我尝试从我的内部执行命令行命令macOS Swift 应用程序 没有将我的应用程序设置为沙箱 一切都工作正常 但由于我激活了沙箱 该命令将不再起作用 但不会抛出任何错误并以状态代码终止0 所以最简单的用