Acceso denegado a directorio

18/10/2009 - 13:32 por Alberto | Informe spam
En el constructor de un formulario tengo que leer un fichero de
configuración xml que tengo en la misma carpeta que el ejecutable de la
aplicación. El problema es que VS me muestra un error cuando quiero ver el
diseño del formulario.

En el código tengo esto:

string fileName = Environment.CurrentDirectory + @"\MyConfig.xml";

El problema es que en tiempo de diseño el directorio actual debe ser otro.
Fijaros en el error que me aparece:

Acceso denegado a la ruta de acceso 'C:\Program Files\Microsoft Visual
Studio 9.0\Common7\IDE\myConfig.xml'.

¿Cómo lo puedo solucionar? Gracias.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
18/10/2009 - 14:16 | Informe spam
"Alberto" wrote in message
news:
En el constructor de un formulario tengo que leer un fichero de
configuración xml que tengo en la misma carpeta que el ejecutable de la
aplicación. El problema es que VS me muestra un error cuando quiero ver el
diseño del formulario.

En el código tengo esto:

string fileName = Environment.CurrentDirectory + @"\MyConfig.xml";

El problema es que en tiempo de diseño el directorio actual debe ser otro.
Fijaros en el error que me aparece:

Acceso denegado a la ruta de acceso 'C:\Program Files\Microsoft Visual
Studio 9.0\Common7\IDE\myConfig.xml'.

¿Cómo lo puedo solucionar? Gracias.



El problema es que estás confundiendo el "directorio actual (current)"
con el directorio del programa. El directorio actual puede ser cualquiera.
Por ejemplo, desde una ventana de comandos puedes hacer "CD C:\TEMP" y a
continuación desde ahi lanzar "C:\MisProgramas\Miprograma.exe". El programa
se ejecutará tranaquilamente y su "CurrentDirectory" será "C:\temp" pese a
que la ubicación del ejecutable es "C:\Misprogramas".

Si tu programa es un WinForm, puedes preguntar por la ruta del programa
mediante Application.ExecutablePath, o si es de cualquier otro tipo, puedes
usar Assembly.GetExecutingAssembly.Location.
Respuesta Responder a este mensaje
#2 Alberto
18/10/2009 - 17:45 | Informe spam
Tienes razón. El problema que tengo ahora es que Application.ExecutablePath
me devuelve la ruta completa, incluido el nombre del exe y a mi solo me
interesa la ruta.

¿Existe algún método de alguna clase que me devuelva solo la ruta? Gracias
"Alberto Poblacion"
escribió en el mensaje de noticias
news:uwK%23hz%
"Alberto" wrote in message
news:
En el constructor de un formulario tengo que leer un fichero de
configuración xml que tengo en la misma carpeta que el ejecutable de la
aplicación. El problema es que VS me muestra un error cuando quiero ver
el diseño del formulario.

En el código tengo esto:

string fileName = Environment.CurrentDirectory + @"\MyConfig.xml";

El problema es que en tiempo de diseño el directorio actual debe ser
otro. Fijaros en el error que me aparece:

Acceso denegado a la ruta de acceso 'C:\Program Files\Microsoft Visual
Studio 9.0\Common7\IDE\myConfig.xml'.

¿Cómo lo puedo solucionar? Gracias.



El problema es que estás confundiendo el "directorio actual (current)"
con el directorio del programa. El directorio actual puede ser cualquiera.
Por ejemplo, desde una ventana de comandos puedes hacer "CD C:\TEMP" y a
continuación desde ahi lanzar "C:\MisProgramas\Miprograma.exe". El
programa se ejecutará tranaquilamente y su "CurrentDirectory" será
"C:\temp" pese a que la ubicación del ejecutable es "C:\Misprogramas".

Si tu programa es un WinForm, puedes preguntar por la ruta del programa
mediante Application.ExecutablePath, o si es de cualquier otro tipo,
puedes usar Assembly.GetExecutingAssembly.Location.


Respuesta Responder a este mensaje
#3 Alberto
18/10/2009 - 18:10 | Informe spam
Ahora mismo estoy capturando la ruta así:
Application.ExecutablePath.Substring(0,
Application.ExecutablePath.LastIndexOf('\\')) + @"\" + archivoXml

pero no sé si es una chapuza. ¿Hay un modo más directo de hacerlo? Gracias
"Alberto Poblacion"
escribió en el mensaje de noticias
news:uwK%23hz%
"Alberto" wrote in message
news:
En el constructor de un formulario tengo que leer un fichero de
configuración xml que tengo en la misma carpeta que el ejecutable de la
aplicación. El problema es que VS me muestra un error cuando quiero ver
el diseño del formulario.

En el código tengo esto:

string fileName = Environment.CurrentDirectory + @"\MyConfig.xml";

El problema es que en tiempo de diseño el directorio actual debe ser
otro. Fijaros en el error que me aparece:

Acceso denegado a la ruta de acceso 'C:\Program Files\Microsoft Visual
Studio 9.0\Common7\IDE\myConfig.xml'.

¿Cómo lo puedo solucionar? Gracias.



El problema es que estás confundiendo el "directorio actual (current)"
con el directorio del programa. El directorio actual puede ser cualquiera.
Por ejemplo, desde una ventana de comandos puedes hacer "CD C:\TEMP" y a
continuación desde ahi lanzar "C:\MisProgramas\Miprograma.exe". El
programa se ejecutará tranaquilamente y su "CurrentDirectory" será
"C:\temp" pese a que la ubicación del ejecutable es "C:\Misprogramas".

Si tu programa es un WinForm, puedes preguntar por la ruta del programa
mediante Application.ExecutablePath, o si es de cualquier otro tipo,
puedes usar Assembly.GetExecutingAssembly.Location.


Respuesta Responder a este mensaje
#4 Alberto Poblacion
18/10/2009 - 20:15 | Informe spam
"Alberto" wrote in message
news:
Ahora mismo estoy capturando la ruta así:
Application.ExecutablePath.Substring(0,
Application.ExecutablePath.LastIndexOf('\\')) + @"\" + archivoXml



Aunque eso funciona, échale un vistazo a la clase System.IO.Path, que ya
tiene métodos para hacer directamente este tipo de operaciones con una sola
llamada, para que no tengas que andar jugando con el Substring y el IndexOf.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida