none
Conceder Permissões para Aplicação executar .bat ou cmd.exe no Servidor... RRS feed

  • Pergunta

  • Bom dia galera,

    Gostaria de saber quais permissões devo conceder para que minha aplicação possa executar arquivos .bat e .exe, FTP ou o CMD.

    Já tentei diversos códigos, mas nenhum funciona, não acredito que seja problema na programação, mas sim nos critérios de segurança do servidor. 

    Segue código implementado e que em diversos lugares vi relatos que funciona. Como ele roda, não gera nenhum erro, porém o arquivo .bat não é executado.

    System.Diagnostics.Process processo = new Process();
                processo.StartInfo.FileName = " C:\\Inetpub\\wwwroot\\Jes.bat";
                processo.StartInfo.WorkingDirectory = "C:\\Inetpub\\wwwroot\\";
                processo.StartInfo.CreateNoWindow = true;
                processo.StartInfo.UseShellExecute = true;
                processo.Start();
    Alguém tem alguma dica de como autorizar a execução de .bat no servidor para uma determinada aplicação ou usuário?

    segue outro código também, mas q não funcionou

    Process p = new Process();
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.FileName = "C:\\Windows\\System32\\cmd.exe";
    p.StartInfo.Arguments = @"Ftp -s:\\SERVER\PASTA\PASTA2\Arquivo.txt";
    p.StartInfo.UseShellExecute = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.RedirectStandardError = true;
    p.StartInfo.WorkingDirectory = "C:\\Windows\\System32\\";
    p.Start();
    Neste segundo caso tento rodar o cmd.exe para executar um comando FTP, no caso este comando é o que está dentro do arquivo Jes.bat que tentei executar anteriormente.


    Marcos Paulo - Analista de Sistemas

    sexta-feira, 17 de outubro de 2014 11:37

Todas as Respostas

  • Na realidade o usuário que executa seu programa/aplicação deve ter privilégios elevados (administrador) para que possa fazer isso. Numa aplicação web o usuário do seu pool de aplicação deve ter essas permissões para que ela execute o código acima e numa aplicação desktop ou o usuário deve ter esse privilégio ou ele deve clicar com o botão direito e dar um "Executar como administrador".

    Outra opção é fazer isso programaticamente:

       //Executar processo do Windows com usuário específico          
                    var process = new Process();
                    process.StartInfo.FileName = @"E:\teste.bat";
                    process.StartInfo.UserName = "deric.ferreira@meudominio.local";
                    var password = new char[] { 'M', 'i', 'n', 'h', 'a','S','e','n', 'h', 'a' };
                    var adminpassword = new System.Security.SecureString();
                    foreach (char c in password)
                    {
                        adminpassword.AppendChar(c);
                    }
                    process.StartInfo.Password = adminpassword;
                    process.StartInfo.UseShellExecute = false;
                    process.Start();

    Marque como útil se te ajudou.


    • Sugerido como Resposta Deric Ferreira sexta-feira, 17 de outubro de 2014 12:12
    • Editado Deric Ferreira sexta-feira, 17 de outubro de 2014 12:21
    sexta-feira, 17 de outubro de 2014 12:12