I mean, I could do a readdir on /Library/SystemExtensions/
, but that won't really tell me which ones are active. I could parse the output of systemextensionsctl list
but that doesn't seem particularly good.
Is there a way to (programmatically) find active system/network extensions?
Only within your apps sandbox.
macOS, so the app needn't be sandboxed. Sorry I didn't make that clear.
All system extensions? Or system extensions that you ‘own’?
If it’s the latter, the container app can check on the status of the system extension using a properties request, creating using the propertiesRequest(forExtensionWithIdentifier:queue:)
method.
If you’re trying to get a global view of all system extensions installed and active, that’s tricky. Why do you need that info?
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
I knew I had a reason for wondering about others, but I think that was just curiosity.
The issue I'm trying to deal with is having the transparent proxy not come back automatically; I had thought I could use a daemon we have to try to start the VPN if it was not connected, but I'm not sure that is possible. (After the containing app loads the extension; the reason to see if it's already loaded is to send a message off to an agent, which would then open a url to cause the containing app to launch and load.)
... There is virtually no documentation about propertiesRequest(forExtensionWithIdentifier:queue:)
. Since it takes a dispatch queue, I assume it returns a OSSystemExtensionRequest
instance, and then I should set the delegate? And the delegate method -request:foundProperties:
method will be invoked?
Sorry I seem to have cross the Swift and ObjC streams in that. 😄
There is virtually no documentation
Check out the doc comments in the <SystemExtensions/SystemExtensions.h>
header.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
Also, yet another async call. 😄