I am getting a access denied exception. How can I fix this?
Here is the exception:
System.UnauthorizedAccessException was unhandled HResult=-214
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.)
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
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
<requestedExecutionLevel level="requireAdministrator" uiAccess="true"/>
You need to set the FileAtrributes
property of the File
to Normal
before accessing the file.
Try This:
public static void WriteToFile(string s)
{
String path=@"c:\message.txt";
if(File.Exists(path))
{
File.SetAttributes(path, FileAttributes.Normal);
fs = new FileStream(path,
FileMode.Append, FileAccess.Write);
sw = new StreamWriter(fs);
sw.WriteLine(s);
sw.Flush();
sw.Close();
fs.Close();
}
else
{
MessageBox.Show("File not Found!");
}
}
Double click on app.manifest
file and if app.manifest
not present Right click on your project, add -> New Item -> Application Manifest File then replace this line
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
with this
<requestedExecutionLevel level="requireAdministrator" uiAccess="true" />
It will run your application with administrator privileges.
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, like My Documents
.