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!
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