В настоящее время я работаю на MacOS High Sierra (не Windows) с использованием Qt.Просто используя обычный macOS, а не macOS сервер.Я рад написать код только для Mac вне пузыря Qt, чтобы исправить эту проблему, очевидно.
Я ищу способ программно проверить в C / C ++ или Objective-C, является ли конкретная локальная папкаобщедоступен в локальной сети.В качестве альтернативы я хотел бы получить список всех общих папок.Мне бы хотелось, чтобы этот метод работал на достаточно большом диапазоне версий MacOS, например, с 10,9 до 10,14.
Мне нужно сделать это для того, чтобы переписать пути к локальным файлам в виде путей UNC, чтобы они были доступны с клиентского компьютера Windows в той же сети через общий доступ к SMB с подходящими учетными данными.Предполагается, что общие папки уже настроены, но если этого не произойдет, пользователь получит сообщение об ошибке и предложит поделиться соответствующими папками.
Я могу поделиться / отменить общий доступ и увидеть состояние общего доступа к папкеиспользуя диалоговое окно «Получение информации» в Finder, но я ищу что-то, что можно использовать в приложении.
Вещи, которые я пытался безуспешно:
- Поиск других экземпляровпроблема
- Класс NSURL - не документирует имя ресурса для запроса его статуса общего доступа.
- smbutil, похоже, не выводит список общих ресурсов с компьютера, на котором он работает.
- У smbd, похоже, нет параметров командной строки для запроса общих папок.
- Различные файлы конфигурации, упомянутые в справочных страницах smbutil и smbd.conf, не содержат список общих папок
- mdls не содержит каких-либо соответствующих метаданных в выходных данных для папок, которыеshared.
- ls -l @ не отображает никакой дополнительной информации для общих папок
- Предоставляет общий доступ к папке с необычным именем и ищет на жестком диске имя папки, включая двоичные файлы, чтобы проверить, есть ли эта информациясохраняется где-то.Предположительно, он каким-то образом сохраняется, потому что папка становится общей после перезагрузки, но я нигде не могу найти ни одной записи с именем папки.
- Сервисы OpenDirectory, похоже, содержат много ссылок на SMB в заголовках, но я не могусм. способ использования OpenDirectory для получения списка общих папок с локального компьютера.
- Совместное использование корневой папки, чтобы перезапись была тривиальной.Это работает, но довольно нежелательно предоставлять общий доступ к корневой папке.
- Возможно, есть лучший способ сделать доступ, который позволит избежать необходимости иметь и запрашивать общие ресурсы SMB ...?