macos - 如何在 C/C++ 或 Objective C 中查询特定文件夹是否共享或枚举从 osx 上的本地计算机共享的文件夹
问题描述
我目前正在使用 Qt 在 macOS High Sierra(不是 Windows)上进行开发。仅使用常规 macOS 而不是 macOS 服务器。显然,我很高兴在 Qt 气泡之外编写仅 Mac 的代码来解决这个问题。
我正在寻找一种以编程方式在 C/C++ 或 Objective-C 中检查特定本地文件夹是否在本地网络上共享的方法。或者,我想检索所有共享文件夹的列表。我希望该方法适用于相当大范围的 macOS 版本,例如 10.9 到 10.14。
我需要这样做以便将本地文件的路径重写为 UNC 路径,以便它们可以通过 SMB 共享从同一网络上的 Windows 客户端计算机使用合适的凭据进行访问。这确实假设已经设置了共享文件夹,但如果尚未设置,用户将收到错误并被提示共享合适的文件夹。
我可以使用 Finder 中的“获取信息”对话框共享/取消共享并查看文件夹的共享状态,但我正在寻找可以在应用程序中使用的东西。
我尝试过但没有成功的事情:
- 搜索问题的其他实例
- NSURL 类 - 不记录资源名称以查询其共享状态。
- smbutil 似乎没有列出从它运行的机器共享的共享。
- smbd 似乎没有任何命令行选项来查询共享文件夹。
- smbutil 和 smbd.conf 手册页中提到的各种配置文件不包含共享文件夹列表
- mdls 在共享文件夹的输出中不包含任何相关元数据。
- ls -l@ 没有列出共享文件夹的任何额外信息
- 共享一个异常命名的文件夹并在硬盘上查找文件夹名称,包括二进制文件,以查看此信息是否保存在某处。大概是因为文件夹在重新启动后共享,但我无法在任何地方找到文件夹名称的任何记录。
- OpenDirectory 服务似乎在标头中包含大量对 SMB 的引用,但我看不到使用 OpenDirectory 获取从本地计算机共享的文件夹列表的方法。
- 共享根文件夹,以便重写是微不足道的。这可行,但共享根文件夹是非常不可取的。
- 也许有一种更好的访问方式可以回避拥有和查询 SMB 共享的需求......?
解决方案
推荐阅读
- regex - 在电话号码 077 12345678 中包含空格
- excel - VBA 错误 1004 选择工作表范围失败
- python - 创建接收实时异步提要的 Python 数据可视化网站的方法
- c - 我可以将 NULL 传递给 modf/modff 吗?
- github - 使用 github 操作将特定文件扩展名推送到 azure 存储帐户
- sql - SQL 视图中的静态唯一标识符/列
- r - R:将两个数据框列合二为一
- amazon-web-services - 删除 EC2 实例后,AWS 警报始终处于“警报状态”
- shell - 如何从xshell中的光标位置删除单词后缀
- docker - 连接多个 docker 容器(docker-compose) - front -> api -> solr