Я создаю расширение системы и включаю его в приложение Ma c на Ma c OS Catalina. Мне удалось создать приложение и запросить активацию расширения у делегата моего приложения (Swift). Мое системное расширение может успешно работать.
Мой вопрос в том, что мне нужно каким-то образом передать дополнительные аргументы от делегата приложения, который запрашивает активацию расширения основной функции моего системного расширения. В частности, я пытаюсь передать имя пользователя, запустившего приложение. Есть ли способ передать дополнительные аргументы от делегата расширению?
Я не могу получить текущего пользователя из системного расширения, потому что расширение всегда работает как root. Таким образом, выборка текущего пользователя вернет root.
Соответствующий код от делегата приложения:
func applicationDidFinishLaunching(_ aNotification: Notification) {
let ID = "com...."
let req = OSSystemExtensionRequest.activationRequest(forExtensionWithIdentifier: ID,
queue: DispatchQueue.main).
req.delegate = self
/*some how pass this arguments to extension*/
let username = NSFullUserName()
OSSystemExtensionManager.shared.extensionManager.submitRequest(req)
}
Основная функция моего расширения системы:
int main(int argc, const char* argv[]){
//start.....extension
//Need to receive arguments here
dispatch_main();
}
Если бы я мог каким-то образом получить имя пользователя, переданное в argv
, это было бы здорово. Я открыт для других решений. Суть в том, что мне нужно каким-то образом передать это значение имени пользователя между ними.