代码之家  ›  专栏  ›  技术社区  ›  persiflage

如何查询特定文件夹是否共享或枚举在C/X或Object C上OSX共享的本地机上共享的文件夹

  •  1
  • persiflage  · 技术社区  · 6 年前

    我目前正在使用Qt开发macOS High Sierra(不是Windows)。只是使用普通的macOS而不是macOS服务器。显然,我很乐意在Qt气泡之外编写Mac专用代码来解决这个问题。

    我正在寻找一种方法来以编程方式检查C/C++或Objy-C是否在本地网络上共享特定的本地文件夹。或者,我想检索所有共享文件夹的列表。我希望该方法能够在相当大的macOS版本范围内工作,例如10.9到10.14。

    我需要这样做,以便将本地文件的路径重写为UNC路径,以便可以通过具有适当凭据的SMB共享从同一网络上的Windows客户端计算机访问它们。这确实假设共享文件夹已经设置好,但是如果没有,用户将收到一个错误并提示共享合适的文件夹。

    我可以使用Finder中的“获取信息”对话框共享/取消共享文件夹并查看其共享状态,但我正在寻找可以在应用程序中使用的内容。

    我尝试过但没有成功的事情:

    • 寻找问题的其他实例
    • NSURL类-不记录要查询其共享状态的资源名称。
    • smbutil似乎没有列出正在运行的计算机上共享的共享。
    • smbd似乎没有任何命令行选项来查询共享文件夹。
    • smbutil和smbd.conf手册页中提到的各种配置文件不包含共享文件夹列表
    • MDL在共享文件夹的输出中不包含任何相关元数据。
    • ls-l@没有列出共享文件夹的任何额外信息
    • 共享一个不寻常命名的文件夹,并在硬盘上显示包含二进制文件的文件夹名,以查看此信息是否在某个地方持久化。可能是由于文件夹在重新启动后共享,但我在任何地方都找不到文件夹名的任何记录,所以它以某种方式被持久化。
    • OpenDirectory服务似乎在头中包含许多对SMB的引用,但我看不到使用OpenDirectory从本地计算机获取共享文件夹列表的方法。
    • 共享根文件夹,这样重写就很简单了。这是可行的,但是不希望共享根文件夹。
    • 也许有一种更好的访问方式可以避开拥有和查询SMB共享的需要。。。?
    0 回复  |  直到 6 年前