Usuário com melhor resposta
Salvar arquivos no cliente...

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
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
-
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
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
-
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.,
Marcos Paulo - Analista de Sistemas
-
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
-
var nomeHost = Request.UserHostAddress;
Se a resposta anterior foi útil, na se esqueça de marcar!
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
-
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
-
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
-
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
-
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