Подтвердить что ты не робот

Доступ к пути "C:\Users\xxx\Desktop" запрещен

Я тщательно проверил все вопросы об отказе в доступе и не нашел ни одного вопроса, связанного с доступом к форме Windows, в моей собственной системе. Все вопросы связаны с веб-приложением.

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        byte[] imgdata;
        FileStream fsrw;
        string fname;
        openFileDialog1.Filter = "Sai Files(*.JPG;*.GIF)|*.jpg;*.gif|All files (*.*)|*.*";
        openFileDialog1.ShowDialog();//opens the dialog box
        fname = openFileDialog1.FileName;//stores the file name in fname
        pictureBox1.ImageLocation = fname;//gives the image location to picturebox
        fsrw = new FileStream("C:\\Users\\Sainath\\Desktop", FileMode.Open, FileAccess.ReadWrite);
        imgdata = new byte[fsrw.Length];
        fsrw.Read(imgdata, 0, Convert.ToInt32(fsrw.Length));
        fsrw.Close();
        string s = "insert into imagetest values(@p1,@p2)";
        SqlConnection con = new SqlConnection("server=.;Data Source=.;Initial Catalog=Work;Integrated Security=True");
        SqlCommand cmd = new SqlCommand(s, con);
        cmd.Parameters.AddWithValue("@p1", imgdata);
        cmd.Parameters.AddWithValue("@p2", fname);
        con.Open();
        int i = cmd.ExecuteNonQuery();
        con.Close();
        Console.WriteLine(i);
    }
}
4b9b3361

Ответ 1

Вам может потребоваться запустить вашу программу /IDE в качестве администратора для доступа к этой папке. Я не совсем уверен, почему, но у меня была такая же проблема. Что-то делать с разрешениями Windows по умолчанию. Сообщите нам, если это сработает!

Изменить:

Путь ведет к папке, а не файлу. Я считаю, что FileStreams на языках на основе C должны фактически указывать на файл, а не на каталог: ie. C:\Users\Username\Desktop\file.extension. Можете ли вы попробовать это и сообщить нам, если это вообще поможет?

Ответ 2

Возможно, вы не понимаете, что пытаетесь открыть папку "Рабочий стол", а затем пытаетесь использовать ее в качестве файла.

Если вы намерены записать байты изображения в свою базу данных, тогда ваш код должен быть

  fsrw = new FileStream(fname , FileMode.Open, FileAccess.ReadWrite);

Ответ 3

"C:\\Users\\username\\Desktop" - это каталог для меня; а не файл.

Поскольку вы пытаетесь открыть файл, это:

fsrw = new FileStream("C:\\Users\\Sainath\\Desktop", FileMode.Open, FileAccess.ReadWrite);

... должен быть

var fullpath = Path.Combine("C:\\Users\\Sainath\\Desktop", fname);
fsrw = new FileStream(fullpath, FileMode.Open, FileAccess.ReadWrite);

Ответ 4

  • Обязательно используйте полное имя, включая имя файла как для адресата, так и для источника. (например, C:\Source\file.ext, C:\Destination\file.ext)

  • Visual Studio должна работать с теми же правами доступа, что и папки, к которым вы пытаетесь получить доступ. Попытка получить доступ к чему-то вроде "Мои документы" и других мест, для которых вам не нужны повышенные права доступа, не требует, чтобы вы поднимали Visual Studio.

  • Вам не нужно "приобретать" или изменять права доступа к файлам и папкам, доступ к которым вы обычно можете получить от того же пользователя, в котором вы используете VS.

ССЫЛКА НА ИСТОЧНИК: введите ссылку здесь

Ответ 5

Я обнаружил, что флаг "только для чтения" (если он включен) не позволяет объектам FileStream и MemoryMappedFile открывать и читать файл. Есть два решения: отмените выбор только для чтения или измените FileStream/MemoryMappedFile, чтобы открыть в FileMode.Read/MemoryMappedFileAccess.Read; поведение чтения/записи по умолчанию для FileStream - чтение/запись.