I've built a Windows Application using c#, on Windows 7.
Everything was working fine, so I've created a Setup Wizard project and then built it. Once I install the app, I can open it correctly, but when I try to make some action that writes a text file(with logging purposes) it crashes, thrwoing me the following error message:
UnauthorizedAccessException
Access to the path 'C:\Program Files
(x86)\MSProgram\MSProgram\log.txt' is
denied.
When I manually give that folder full rights, it works fine. Now, the question is the following:
How do I programmatically give the app rights for writing things in my app's directory? So every person that downloads it doesn't experience the same problem.
解决方案
Don't. Applications should not write data into their installation directory directly. Doing so will make the application work poorly on Windows Vista and Windows 7, since it's not the proper way of saving data.
You should instead use Environment.GetFolderPath, and write into a good location, such as the user's application data folder (Environment.SpecialFolders.ApplicationData).