I am getting a access denied exception. How can I fix this?
Here is the exception:
System.UnauthorizedAccessException was unhandled HResult=-2147024891 Message=Access to the path 'c:\message.txt' is denied.
Source=mscorlib
Here is the code:
public static void WriteToFile(string s)
{
fs = new FileStream("c:\\message.txt",
FileMode.Append, FileAccess.Write);
sw = new StreamWriter(fs);
sw.WriteLine(s);
sw.Flush();
sw.Close();
fs.Close();
}
EDIT: It works if I run vs2012 as administrator, but is there a way or a reason to do it as normal user?
And this works:
public static void WriteToFile(string s)
{
fs = new FileStream(@"C:\Users\KristjanBEstur\Documents\message.txt",
FileMode.Append, FileAccess.Write);
sw = new StreamWriter(fs);
sw.WriteLine(s);
sw.Flush();
sw.Close();
fs.Close();
File.Delete(@"C:\Users\KristjanBEstur\Documents\message.txt");
}
Double click on
app.manifest
file and ifapp.manifest
not present Right click on your project, add -> New Item -> Application Manifest File then replace this linewith this
It will run your application with administrator privileges.
You need to set the
FileAtrributes
property of theFile
toNormal
before accessing the file.Try This:
Just to add to Mujahed's answer (I can't comment yet), you don't need
uiAccess="true"
if you just wanted to run with administrator privileges. Setting this option to true could cause you some headache (e.g. you might not be able to run your project in debug mode.)I'm not sure exactly what all might throw an
UnauthorizedAccessException
.One idea though... you're trying to create a file directly in the
c:
drive, which is sometimes disallowed by system policy. For the sake of troubleshooting, try creating the file somewhere else that you'd have access to, likeMy Documents
.You may need to run your project in administrator mode if you want access to the root directory
You can do this by adding this to the app manifest