Read Permission without unlock dialog - objective-c

I want to open some file from my application, file are created by the application itself and can have read or write permission.
I set read permission file with:
chmod 400 path
I want read permission file don't show unlock dialog when the user try to edit such files.
Is there any FS flags that can help me?
I just notice that if I try to change the owner of the file, the annoying dialog disappear, and the user can just duplicate the file in another place. This is exactly what I'm looking for but, is this the correct way to block a file?
Here 2 images about the involved dialogs

If the file only have read permissions, then it must be that the file system will ask for a password if the owner (or someoneelse) tries to change the file. Normally, one cannot change the owner of a file to some other owner ; that would be a major security hole.
Maybe what you are looking for is the stationary flag ? This will force a user to duplicate the file to work with it, but reading it should be no problem. You get that easily in the finder from the info window for a given file.
This is not a standard unix flag but a hfs thing. You will have to set this using NSFileManager and the method
setAttributes:ofItemAtPath:error:

Related

Why I can't find my database file in C: disc from DB Browser

I made database file called doctors.db in path given in following picture. I played with it in Command Prompt and it works perfect!
Now when I try to find it with program DB Browser for sqlite, you can see it is not possible to find it. Does someone know what the problem is? I am really surprised by this. I scrolled entire PC folder and still no sign of it..
Are you sure you've called it 'doctors.db', not just 'doctors'? The file type 'file' suggests it doesn't have its extension.

I want to copy the file in sandbox without NSOpenPanel

I want to copy some files to specified folder by NSOpemPanel.
The source file is reading from XML and show to list in NSTable.
I can copy file by copyItemAtPath.
But now my app will turn to sandbox, then I can’t copy the file by copyItemAtURL.
How do I copy the file in sandbox mode?
I was looked over a lot of post. And I think the Security-scoped Bookmark may be a solution for this.
But I can’t create "Security-scoped Bookmark" from XML inside the path (the path was convert to NSURL ready).
I was setting to sandbox.entitlements but it's not clear this problem.
Is there any way for this?
Develop in macOS10.12 and Xcode8.3.3
Thanks
How do I copy the file in sandbox mode?
It is unclear what your current code is doing, but the rules under the sandbox are simple: To read or write a file located outside of an application's own container (which is hidden away under the Library folder) your application must either:
Use NSOpenPanel to obtain a URL from the user for the file path; or
Use NSOpenPanel to obtain a URL from the user for one of the ancestor folders of the file.
The second option gives access to a whole folder, including any sub-folders; i.e. the whole file/folder subtree rooted in the folder.
As you want to copy "some files" it sounds like asking the user for permission for the folder is appropriate. You can customise the NSOpenPanel to be a "request permission" dialog. If you are requesting a specific folder you can also have the dialog open in it's containing folder and only have the specific folder enabled for selection by the user.
Once you have the URL for the folder from NSOpenPanel you can create a security scoped bookmark for it and save that in your app's preferences or other configuration file (stored within the app's container). Doing this enables your app to regain access to the folder on subsequent executions without asking the user again.
If after investigating this issue and writing some code you hit an issue ask a new question, showing your code, and explaining the problem. Someone will undoubtedly help you with the next step.
HTH

VB.NET Opening A File From Form

I'm using the following the code to open a file that resides elsewhere on the computer:
System.Diagnostics.Process.Start(PathToOpen)
Where PathToOpen is the full address to the file I wish to open. This appears to work as intended for any file type that has an application installed that can open the file.
Whilst this works OK, if the file is on a networked drive, I want my VB.Net code to check if the file is currently in use, if so display a message. Currently what happens is if a second user tries to open the file, it opens read-only (a word file for example) which is handled outside of my application. I want to intercept before the file is opened and stop the process there.
Is this possible at all?
You are basically asking if it's possible to monitor files on a system that doesn't even belong to you ?
Word does know about a file already in use because it creates a hidden file next to the one you open. if there is already a hidden file, it means the file is already in use.
Other applications use different ways of knowing if a file they can use is already opened somewhere else.
In order to do what you want to do, you need to know how all the applications handle this problem...
A possible solution would be for you to create a small hidden file next to the file the user wants to open (just like MS Word does). Only problem, you need to destroy the file when it's closed by the user, and you have no way of knowing that...

Problems overwriting file in application folder

I have a file called PolicyLookup.sql that sits in my application's root folder. My app loads this file into a text box, so that users can edit it and overwrite the original file by pressing a save button. This all worked perfectly during test, however after deployment users are unable to save the file due to write issues within C:\Program Files.
Is there a way around this - or is there a better way to implement this type of thing? One solution that springs to mind for me is placing the contents of the PolicyLookup.sql file within a User Setting - however it intrinsically feels wrong to me to put the entire contents of a file within a settings variable.
Ordinary users do not have write permissions on %ProgramFiles%. If you need to save a configuration file then put it in a subfolder of %APPDATA% (which for me is C:\Users\Gord\AppData\Roaming) or some other place where a regular user is allowed to write.

Cannot Overwrite User Selected File from App Sandbox

I have a Mac App that generates some data and write it to a file then asks the user where they want to save it and moves that saved file from the sandbox to the location they specify. This works fine unless the user selects a file that already exists. If the user presses "Replace" when OSX tells them that a file already exists, the NSError becomes non-nil with the following localized description.
"testfile" couldn’t be copied to “Desktop” because an item with the
same name already exists.
How can I get this sandboxed app to overwrite the pre-existing file?
Thank you,
Stateful
This question provides the answer to my question:
Replace a file using the NSSavePanel in a sandboxed application
Thank you, Merlin!