5

My application is raising an unauthorized access error. While running my application, I try to access a directory in the following location: Application.UserAppDataPath.

The Problem: It says I do not have permission to access the Application.UserAppDataPath directory

Is there a way to set permissions within my application source code?

Something like:

Application.UserAppDataPath.SetPermissions()
Jon Seigel
  • 12,251
  • 8
  • 58
  • 92
RedEye
  • 845
  • 1
  • 9
  • 22
  • 2
    Please show us your code; you're probably making a mistake. – SLaks Mar 04 '10 at 01:59
  • 1
    If you don't have permission to *access* the path, it stands to reason that you won't have permission to *set permissions on* the path... but you should always have permissions to the user app data. – Aaronaught Mar 04 '10 at 02:00
  • The code that throws the exception is this: StreamReader sr = new StreamReader(Application.UserAppDataPath)); – RedEye Mar 04 '10 at 02:28

2 Answers2

13

Looking at your comment, you say this is your code:

StreamReader sr = new StreamReader(Application.UserAppDataPath);

Application.UserAppDataPath is a directory, not a file. If you try to open that directly, it's the same as trying to open a file one level below the AppData folder, which you really don't have permission to do.

Use Path.Combine to construct a path to a file inside the AppData folder, i.e.

string fileName = Path.Combine(Application.UserAppDataPath, "settings.xml");
StreamReader sr = new StreamReader(fileName);

Of course this is just an example - in reality you should probably be using a sub-folder inside AppData specific to your application.

Aaronaught
  • 120,909
  • 25
  • 266
  • 342
  • 3
    This is most likely the cause, and one that I've seen too often. You **definately** want to create a subdirectory underneath AppData that is specific to your application and use that. – Scott Dorman Mar 04 '10 at 03:00
2

Its probably a UAC issue, Try running your application as an elevated process, and see if the error persists

caesay
  • 16,932
  • 15
  • 95
  • 160