none
Salvar arquivos no cliente... RRS feed

  • Pergunta

  • Bom dia galera, gostaria de saber como faço para salvar um arquivo na máquina do cliente, estou utilizando Intranet.

    Gostaria de salvar um arquivo .bat na máquina do cliente e executá-lo logo em seguida. Acredito que antes de mais nada preciso descobrir o nome da máquina que o usuário está utilizando na rede. Depois salvaria o arquivo nessa máquina através do nome na rede, e executaria o arquivo salvo na máquina do cliente....

    Alguém teria alguma dica de como fazer isso?????

    Abraços


    Marcos Paulo - Analista de Sistemas

    quarta-feira, 15 de outubro de 2014 11:10

Respostas

  • var nomeHost = Request.UserHostAddress;




    Se a resposta anterior foi útil, na se esqueça de marcar!

    Fala Deric... O método funciona, mas não o retorna o que eu preciso. Ele retorna o nome do Servidor e não o da máquina. Já consegui um método que era pra retornar o nome da máquina, mas ta retornando o IP.
    string machine_ba = Request.ServerVariables["REMOTE_HOST"].ToString();
    vc sabe se tem alguma coisa parecida que retorne o nome, e não o IP?

    Marcos Paulo - Analista de Sistemas

    Marcos, esta propriedade retorna o nome da máquina do cliente e não do servidor, você testou na sua própria máquina? 

    Vamos em frente.  Para obter o nome da máquina pelo IP

                IPHostEntry iphost = Dns.GetHostEntry("127.0.0.1");
                string hostName = iphost.HostName;
    
    Marque a resposta como útil, caso tenha ajudado!

    • Sugerido como Resposta Deric Ferreira quarta-feira, 15 de outubro de 2014 14:03
    • Marcado como Resposta Marcos Paulo P.M quarta-feira, 15 de outubro de 2014 19:25
    quarta-feira, 15 de outubro de 2014 14:03
  • Fala Deric, a partir da sua sugestão, encontrei a solução para obter o nome da máquina. Segue o código
    string machine_bario = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
    
                IPHostEntry iphost = System.Net.Dns.GetHostEntry(machine_bario);
                string hostName = iphost.HostName;
    Agora só preciso saber como referenciar o caminho para que ele salve o arquivo na máquina do usuário... tem alguma idéia??

    Marcos Paulo - Analista de Sistemas

    • Marcado como Resposta Marcos Paulo P.M quarta-feira, 15 de outubro de 2014 19:25
    quarta-feira, 15 de outubro de 2014 19:25

Todas as Respostas

  • Olá Marcos Paulo,

    Para salvar um arquivo na máquina do cliente e executá-lo imediatamente você pode utilizar um utilitário da Microsoft, o PsExec.

                var process = new Process();
                process.StartInfo.FileName = "psexec \\NomeDaMaquinaCliente -c D:\MeuArquivo,bat";
                process.Start();
    


    http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

    Lembre-se de marcar a resposta como útil!

    Abs.,


    • Sugerido como Resposta Deric Ferreira quarta-feira, 15 de outubro de 2014 12:02
    quarta-feira, 15 de outubro de 2014 11:33
  • Olá Marcos Paulo,

    Para salvar um arquivo na máquina do cliente e executá-lo imediatamente você pode utilizar um utilitário da Microsoft, o PsExec.

                var process = new Process();
                process.StartInfo.FileName = "psexec \\NomeDaMaquinaCliente -c D:\MeuArquivo,bat";
                process.Start();


    http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

    Lembre-se de marcar a resposta como útil!

    Abs.,


    Falae Deric... obrigado pela ajuda, a parte da execução do arquivo até sei fazer, o que preciso é de um método que retorne o nome da máquina na rede... vc teria alguma sugestão?

    Marcos Paulo - Analista de Sistemas

    quarta-feira, 15 de outubro de 2014 12:29
  • var nomeHost = Request.UserHostAddress;




    Se a resposta anterior foi útil, na se esqueça de marcar!

    • Sugerido como Resposta Deric Ferreira quarta-feira, 15 de outubro de 2014 13:11
    quarta-feira, 15 de outubro de 2014 13:11
  • var nomeHost = Request.UserHostAddress;




    Se a resposta anterior foi útil, na se esqueça de marcar!

    Fala Deric... O método funciona, mas não o retorna o que eu preciso. Ele retorna o nome do Servidor e não o da máquina. Já consegui um método que era pra retornar o nome da máquina, mas ta retornando o IP.
    string machine_ba = Request.ServerVariables["REMOTE_HOST"].ToString();
    vc sabe se tem alguma coisa parecida que retorne o nome, e não o IP?

    Marcos Paulo - Analista de Sistemas

    quarta-feira, 15 de outubro de 2014 13:56
  • var nomeHost = Request.UserHostAddress;




    Se a resposta anterior foi útil, na se esqueça de marcar!

    Fala Deric... O método funciona, mas não o retorna o que eu preciso. Ele retorna o nome do Servidor e não o da máquina. Já consegui um método que era pra retornar o nome da máquina, mas ta retornando o IP.
    string machine_ba = Request.ServerVariables["REMOTE_HOST"].ToString();
    vc sabe se tem alguma coisa parecida que retorne o nome, e não o IP?

    Marcos Paulo - Analista de Sistemas

    Marcos, esta propriedade retorna o nome da máquina do cliente e não do servidor, você testou na sua própria máquina? 

    Vamos em frente.  Para obter o nome da máquina pelo IP

                IPHostEntry iphost = Dns.GetHostEntry("127.0.0.1");
                string hostName = iphost.HostName;
    
    Marque a resposta como útil, caso tenha ajudado!

    • Sugerido como Resposta Deric Ferreira quarta-feira, 15 de outubro de 2014 14:03
    • Marcado como Resposta Marcos Paulo P.M quarta-feira, 15 de outubro de 2014 19:25
    quarta-feira, 15 de outubro de 2014 14:03
  • var nomeHost = Request.UserHostAddress;




    Se a resposta anterior foi útil, na se esqueça de marcar!

    Fala Deric... O método funciona, mas não o retorna o que eu preciso. Ele retorna o nome do Servidor e não o da máquina. Já consegui um método que era pra retornar o nome da máquina, mas ta retornando o IP.
    string machine_ba = Request.ServerVariables["REMOTE_HOST"].ToString();
    vc sabe se tem alguma coisa parecida que retorne o nome, e não o IP?

    Marcos Paulo - Analista de Sistemas

    Marcos, esta propriedade retorna o nome da máquina do cliente e não do servidor, você testou na sua própria máquina? 

    Vamos em frente.  Para obter o nome da máquina pelo IP

                IPHostEntry iphost = Dns.GetHostEntry("127.0.0.1");
                string hostName = iphost.HostName;
    Marque a resposta como útil, caso tenha ajudado!

    Deric, utilizei o método que vc me passou, e oq acontece é o seguinte: as máquinas na rede aqui da empresa recebem um nome, ex M05796. O que eu preciso é retornar este nome para salvar um arquivo .bat na máquina do cliente, e executá-lo diretamente dentro dela. O problema é q neste método que vc me passou, ele pegou o IP e retornou o nome do HOST, tipo, host.hostname.com.br  ao invés do M05796. Entendeu o que esta acontecendo? 

    Abraço


    Marcos Paulo - Analista de Sistemas

    quarta-feira, 15 de outubro de 2014 17:47
  • Fala Deric, a partir da sua sugestão, encontrei a solução para obter o nome da máquina. Segue o código
    string machine_bario = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
    
                IPHostEntry iphost = System.Net.Dns.GetHostEntry(machine_bario);
                string hostName = iphost.HostName;
    Agora só preciso saber como referenciar o caminho para que ele salve o arquivo na máquina do usuário... tem alguma idéia??

    Marcos Paulo - Analista de Sistemas

    • Marcado como Resposta Marcos Paulo P.M quarta-feira, 15 de outubro de 2014 19:25
    quarta-feira, 15 de outubro de 2014 19:25
  • Você tem 2 opções:

    • Salvar num diretório que tenha permissão de gravação na máquina do usuário
    File.WriteAllBytes(@"\\" + hostName + "\caminhoCompartilhado\Arquivo1.txt", conteudoBinarioArquivo);

    • Permitir download do arquivo pelo browser
    response.Clear();
        response.AddHeader("content-disposition", "attachment;filename=" + SaveAsFileName);
        response.ContentType = ContentType;
        response.BinaryWrite(File);
        response.End();

    Marque como resposta, se foi útil!

    • Sugerido como Resposta Deric Ferreira sexta-feira, 17 de outubro de 2014 20:48
    sexta-feira, 17 de outubro de 2014 20:48