How to disable Documents folder protection?

I'm working on a C++ program in Xcode, which opens some files in the project folder, which is in ~/Documents/Xcode Projects. Because it's in my Documents folder, every time I run the program, it asks for permissions to access my documents folder, and I have to click yes every time. I tried explicitly giving the program permission in the settings, and that works for a little bit, but after about 3 runs of the program it asks for permissions again. Can I just disable the document folder protection? How?


Solution 1:

The easy way is to turn off sandboxing for the app, in Xcode project settings under "capabilities". You might not want that though.

Otherwise you probably need a security-scoped bookmark to the directory. When you get access, create a bookmark from the directory URL using bookmarkData(options:includingResourceValuesForKeys:relativeTo:). Make sure to use .withSecurityScope in the options argument. Save that to user defaults. Then when you want to use the directory,

  • Read the bookmark from user defaults
  • Initialize the URL using init(resolvingBookmarkData:options:relativeTo:bookmarkDataIsStale:) with options of [.withSecurityScope, .withoutUI].
  • Call .startAccessingSecurityScopedResource() before trying to use the URL.
  • Call .stopAccessingSecurityScopedResource() when you're done with the URL.