c# - the - Se deniega el acceso a la ruta ''C: / Users / xxx / Desktop''
system io file create access denied (4)
He buscado exhaustivamente todas las preguntas de acceso denegado y no encontré ninguna pregunta relacionada con el acceso al formulario de Windows en mi propio sistema. Todas las preguntas están relacionadas con la aplicación web.
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);
}
}
Asegúrese de usar un nombre completo, incluido el nombre de archivo tanto para el destino como para la fuente. (por ejemplo, C: / Source / file.ext, C: / Destination / file.ext)
Visual Studio debería ejecutarse con los mismos derechos de acceso que las carpetas a las que intenta acceder. Intentar acceder a algo como "Mis documentos" y otras ubicaciones a las que no necesita derechos de acceso elevados no debe exigir que eleve Visual Studio.
No debería tener que "adquirir" o cambiar los permisos de los archivos y carpetas a los que normalmente puede acceder desde el mismo usuario en el que está ejecutando VS.
ENLACE A LA FUENTE: ingrese la descripción del enlace aquí
Es posible que tenga que ejecutar su programa / IDE como administrador para acceder a esa carpeta. No estoy exactamente seguro de por qué, pero he tenido el mismo problema. Algo que ver con los permisos predeterminados de Windows. ¡Permítanos saber si funciona!
Editar:
La ruta lleva a una carpeta, no a un archivo. Creo que FileStreams en lenguajes basados en C en realidad debe apuntar a un archivo, en lugar de a un directorio: es decir. C:/Users/Username/Desktop/file.extension
. ¿Puedes probar esto y hacernos saber si te ayuda?
Probablemente no te das cuenta de que estás intentando abrir la carpeta de escritorio y luego tratar de usarla como un archivo.
Si su intención es escribir los bytes de la imagen en su base de datos, entonces su código debería ser
fsrw = new FileStream(fname , FileMode.Open, FileAccess.ReadWrite);
"C://Users//username//Desktop"
es un directorio para mí; no es un archivo
Ya que estás intentando abrir el archivo, esto:
fsrw = new FileStream("C://Users//Sainath//Desktop", FileMode.Open, FileAccess.ReadWrite);
... debiera ser
var fullpath = Path.Combine("C://Users//Sainath//Desktop", fname);
fsrw = new FileStream(fullpath, FileMode.Open, FileAccess.ReadWrite);