Tengo una aplicación winforms en C# donde tengo que abrir una Carpeta determinada.
Yo uso

System.Diagnostics.Process.Start(pathToFolder);

Esto se traduce en la siguiente excepción:

Sistema.ComponentModel.Win32Exception (0 x 80004005): Acceso denegado

al Sistema.Los diagnósticos.Proceso.StartWithShellExecuteEx(ProcessStartInfo
startInfo)

al Sistema.Los diagnósticos.Proceso.Start()

al Sistema.Los diagnósticos.Proceso.Inicio(ProcessStartInfo startInfo)

a MyApp.openLogFolderToolStripMenuItem_Click(Object sender, EventArgs e)

Ya he comprobado las siguientes cosas:

  • Existe la carpeta
  • El usuario tiene derechos a la carpeta (se puede abrir en el Explorador)

Otra cosa es que si puedo usar Process.Start() para abrir un archivo dentro de esta carpeta, funciona.

Puede alguien darme una pista?
Saludos

Editar
Mi objetivo es abrir la carpeta en el Explorador.
El pathToFolder es algo así como H:\Something\App.Name\Log

  • Una ruta de acceso no es un archivo ejecutable que puede abrir/empezar a usar el proceso.start ()… , ¿estás tratando de abrir explorer.exe con cierto camino?
  • Abra visual studio «Ejecutar como Administrador» haciendo clic derecho
  • es derecho. ¿Por qué no nos dicen exactamente lo que están tratando de archivo?
InformationsquelleAutor IRAndreas | 2016-01-27

5 Comentarios

  1. 3

    De acuerdo a MSDN (https://msdn.microsoft.com/en-us/library/53ezey2s(v=vs 110).aspx) la System.Diagnostics.Process.Start(string) ejecuta el archivo o proceso (y por lo tanto no abra la carpeta). Para abrir una carpeta, el https://msdn.microsoft.com/en-us/library/h6ak8zt5(v=vs 110).aspx sugests que usted podría hacer esto con System.Diagnostics.Process.Start(string, string) donde el primero debe ser una forma de explorer, Total commander, o algo similar, y segundo, debe ser un argumento diciendo al utilizar el explorador de qué hacer (abrir la carpeta pathToFolder).

    Supongo que alguna variable del sistema almacena el valor «default visor de carpetas», pero no sé donde. Voy a intentar ir a por ella y volver más tarde con la respuesta.

    La esperanza de que esto ayude.


    EDICIÓN: he hecho un poco rápido a cavar alrededor y abrir la carpeta de la siguiente debe hacer el truco:

    System.Diagnostics.Process.Start(Environment.GetEnvironmentVariable("WINDIR") + @"\explorer.exe", pathToFolder);

    Donde el primer argumento es una ruta clásica en el explorador de windows y la segunda es la ruta de acceso real a la carpeta en sí.
    Parece que las viudas no mantenga camino a otros «visor de carpetas» (como Total Commander, etc.), así de esta manera es, probablemente, fuera de la mesa.

    • Podría resolver el problema simplemente llamando a Process.Start("explorer.exe", pathToFolder); en lugar de Process.Start(pathToFolder);
  2. 0

    Puede establecer el directorio de trabajo como este, pero no se puede correr el mismo directorio de los archivos de sólo o exe

    var startInfo = new ProcessStartInfo();

    startInfo.WorkingDirectory = //directorio de trabajo

    Proceso proc = Proceso.Inicio(startInfo);

  3. 0

    Intente esto:

    var psi = new System.Diagnostics.ProcessStartInfo() { FileName = pathToFolder, UseShellExecute = true };
    System.Diagnostics.Process.Start(psi);
  4. 0

    Yo suelo usar para abrir el archivo/directorio:

        public static void OpenFile(string path, bool isDirectory = false)
        {
            if (string.IsNullOrEmpty(path)) return;
            if ((isDirectory && Directory.Exists(path)) || (!isDirectory && File.Exists(path)))
            {
                ProcessStartInfo pi = new ProcessStartInfo(path);
                pi.Arguments = Path.GetFileName(path);
                pi.UseShellExecute = true;
                pi.WindowStyle = ProcessWindowStyle.Normal;
                pi.Verb = "OPEN";
    
                Process proc = new Process();
                proc.StartInfo = pi;
    
                proc.Start();
            }
        } 

    o

    Process.Start("explorer.exe",path);

    Si esto no funciona, puede ser un problema de permisos, después de todo.

  5. -1

    Este error sucede realmente cuando hay una diferencia entre el comportamiento por defecto de abrir el archivo y la relación de comportamiento de abrir el archivo.
    Por ejemplo, si ha seleccionado la aplicación predeterminada para abrir .los archivos pdf como Internet Explorer, y usted está tratando de abrir el mismo archivo con el Proceso.El método Start (). Usted recibirá una excepción debido a la configuración predeterminada de operaciones se debe abrir el archivo en el Explorador de Internet y su aplicación se está tratando de abrir con Adobe reader.

    Para rectificar este conjunto la aplicación predeterminada para el .archivo pdf como Adobe Reader y no recibir este error más.
    Usted puede hacer esto haciendo clic derecho sobre el archivo y, a continuación, seleccione Predeterminado programa o Aplicación. Además, seleccione el Programa predeterminado o una Aplicación desde la lista de programas disponibles y, a continuación, seleccione la opción » utilizar Siempre el programa seleccionado/App para abrir los archivos de este tipo.

    • Eso no es cierto. Nada impide que, con la apertura de un archivo con un programa diferente a la que se ha elegido como predeterminado en Windows. Imagínese lo que pasaría si hubiera una «.TXT archivo de monopolio» en su PC!

Dejar respuesta

Please enter your comment!
Please enter your name here