How to get the application specific data folder (ProgramData)?

paulinodjm picture paulinodjm · Jan 13, 2015 · Viewed 22k times · Source

I need to read and write files that contain application specific data, shared between all the users.

I tried to use Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), but it returns only C:\ProgramData.

My question is :

Does it exist a system like Path.GetDirectoryName(Application.UserAppDataPath), which will give me the exact folder to write, according to my application name and version?

Or is ProgramData not the right place to do that.

Thanks.

Answer

Akku picture Akku · Jul 9, 2018

I think CommonApplicationData is exactly what you're looking for, as it's the global folder for all applications which are not bound to a user.

var commonpath = GetFolderPath(SpecialFolder.CommonApplicationData);
var path = Path.Combine(commonpath, "YourAppName\\YourApp.exe");
try { 
    Process.Start(path);
    // or put data there or whatever
} 
catch (Exception ex)
{
    MessageBox.Show(path);
}

There's also SpecialFolder.LocalApplicationData for user-bound data.