I have been investigating for some time now a way to prevent my user from accidently entering a data directory of my application.
My application uses a folder to store a structured project. The folder internal structure is critic and should not be messed up. I would like my user to see this folder as a whole and not be able to open it (like a Mac bundle).
Is there a way to do that on Windows?
Edit from current answers
Of course I am not trying to prevent my users from accessing their data, just protecting them from accidentally destroying the data integrity. So encryption or password protection are not needed.
Thank you all for your .Net answers but unfortunately, this is mainly a C++ project without any dependency to the .Net framework.
The data I am mentioning are not light, they are acquired images from an electronic microscope. These data can be huge (~100 MiB to ~1 GiB) so loading everything in memory is not an option. These are huge images so the storage must provide a way to read the data incrementally by accessing one file at a time without loading the whole archive in memory.
Besides, the application is mainly legacy with some components we are not even responsible of. A solution that allows me to keep the current IO code is preferable.
Shell Extension looks interesting, I will investigate the solution further.
LarryF, can you elaborate on Filter Driver or DefineDOSDevice ? I am not familiar with these concepts.
Looks like some Windows ports of FUSE are starting to appear. I think this would be the best solution since it would allow me to keep the legacy code (which is quite large) untouched.