Rob
Rob

Reputation: 759

C#, working with files, "Unauthorized Access"?

I'm learning about opening and saving files with C# and it seems that vista won't let my program save to a file on the root of C:\ , unless I run it in administrator mode.

Any ideas how to allow my program to play around with whatever files it wants?

Thanks!

private string name;

private void open_Click(object sender, EventArgs e)
{
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        name = openFileDialog1.FileName;
        textBox1.Clear();
        textBox1.Text = File.ReadAllText(name);
        textBox2.Text = name;
    }
}

private void save_Click(object sender, EventArgs e)
{
    File.WriteAllText(name, textBox1.Text);
}

Upvotes: 3

Views: 7510

Answers (3)

user229263
user229263

Reputation: 21

There are several reasons for the UnauthorizedAccess Exception. Check one of those:

  • path specified a file that is read-only.

  • This operation is not supported on the current platform.

  • path specified a directory.

I accidently hit the third problem today ;-)

Upvotes: 1

jakobbotsch
jakobbotsch

Reputation: 6337

To make your program start with administrator rights, you have to change the manifest. This can be done by Add New Item -> General -> Application Manifest File. Open the manifest and set "requestedExecutionLevel" to "requireAdministrator". When this is done, open the project settings and on the 'Application' tab choose your new manifest.

Upvotes: 5

Oded
Oded

Reputation: 499312

The program will run with your credentials, by default.

So, these do not have the right permissions to write to the root folder.

If you want it to run with other credentials you can us the runas command line to execute the application with other credentials.

Alternatively, grant more permissions to the account the application runs as.

Upvotes: 4

Related Questions