我目前正在使用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共享的需要。。。?