4

I developed WPF application (.NET 4.5) which is storing some config files at CommonApplicationData folder.

For that purpose I'm using following:

string AppDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);

Also I'm appending Company name / product folder to that path and in 99.9% everything works. Application is able to write config there and to read it. App is mostly used on Win7 and Win8 machines but I got report from client that one machine is having some errors (Windows 7 Pro, .Net 4.5).

When I tried to debug the problem I found following in the log:

System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Program Files (x86)\CompanyName\App\X\Y\Z\settings.config'.

Where

X\Y\Z\settings.config

should be part of C:\ProgramData but somehow application is returning folder where the app is installed (Program Files). I tried to replicate this on multiple machines and enviroments but with no luck.

My questions:

Is it possible to alter Environment.SpecialFolder.CommonApplicationData location in the Windows? Is this some security issue (group policy)? Maybe someone altered the path somehow.

I don't know why app in this one case is returning different folder than C:\ProgramData

If it is possible where I can check what is value of Environment.SpecialFolder.CommonApplicationData except programmatic?

Any advice or solutions?

I always can do some if checks and try to see if the path is wrong than manually correct it but it doesn't sound good to do that.

I always thought that using Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) will give me the right folder independent of the OS version.

I tried running app with full admin rights (plus run as administrator), the problem is same. Application is getting wrong path from Environment.SpecialFolder.CommonApplicationData.

Thank you in advance!

dub stylee
  • 3,252
  • 5
  • 38
  • 59
rjovic
  • 1,207
  • 2
  • 16
  • 37

1 Answers1

0

This article explains where in the registry you can check to see if a user environment variable has been set for this enumeration.

https://msdn.microsoft.com/en-us/library/system.environmentvariabletarget(v=vs.110).aspx

Mike
  • 550
  • 2
  • 16
  • I just checked both USER and MACHINE environment in regedit but I don't see mention or definition of CommonApplicatonData or ProgramDate folder value anywhere. And program is running just fine and it is able to find,read and write to programdata/app/ folder. I'm talking about my machine where there is no issue. I'll check it on target machine but I assume that registry keys will be the same. – rjovic Jun 18 '15 at 08:51