Where to store Application Data in Windows 7 and Vista
Asked Answered
C

2

11

My application needs to, like most, store data. The application was previously used on XP only where it would store the data in Program Files. Now that our customers are moving to Windows 7 I had to upgrade it so that it stored the data in a new folder. I opted for the ApplicationData folder as I thought I would be allowed access without needing UAC at all.

Now on some Windows 7 machines this is fine, but on others access to the folder fails, presumably because of permissions, but when ran with Administrator privelidges the program works fine.

Am I using the wrong folder or are these cases outliers? In either case what is the best practice for this kind of thing?

I am using the following C# SpecialFolder to get the AppData folder location.

System.Environment.SpecialFolder.ApplicationData
Centralism answered 25/2, 2011 at 11:54 Comment(0)
H
10

System.Environment.SpecialFolder.ApplicationData is per-user and roams. That doesn't sound like what you want. You appear to want machine wide settings and so should use System.Environment.SpecialFolder.CommonApplicationData.

Because CommonApplicationData is shared between all users, the default access control is limited. By default standard users cannot write in this location. The recommended practise is to create a sub-folder of CommonApplicationData at installation time and assign it suitably permissive access control settings.

Honorarium answered 25/2, 2011 at 11:58 Comment(2)
Will I require UAC to access CommonApplicationData like I do ApplicationData? Also wouldn't that mean data is shared between all users on the same PC?Centralism
@Centralism "Wouldn't that mean data is shared between all users on the same PC?" Well yes, but you were formerly storing it in Program Files which is machine-wide.Honorarium
P
2

David is right. As far I know, there's also some difference if you deploy your app via ClickOnce or Installer: the first allows a few subset of permissions than the normal installer. I must confess I'm not an expert on that.

Of sure, Program Files is the worst place to store data, even since XP.

Perfect answered 25/2, 2011 at 12:4 Comment(2)
You mean Program Files, ProgramData the name of the common appdata folder on NT6Koser
Ya!...My head is going bad...Thanks Anders!Perfect

© 2022 - 2024 — McMap. All rights reserved.