Usuário com melhor resposta
Pegar IP da Maquina

Pergunta
-
Boa noite.
Estou com um problema em um projeto que estou dando manutenção.
Vamos lá.
Existe uma rotina no sistema, onde o usuário e filial do usuário são carregados conforme o ip da maquina, sempre funcionou essa rotina e eu nunca precisei dar manutenção ou olhar ela a fundo (não fui eu que fiz), essa rotina é usada no projeto inteiro, o projeto é dividido em vários projetos, e cada projeto que o usuário abre, o sistema executa essa rotina.
Conseguimos um novo cliente, que trabalha todos os usuários em um computador remoto (no mesmo computador remoto) e quando o sistema vai pegar o IP do usuário para verificar o nome e a filial, ele pega o IP do computador remoto, existe alguma forma de eu pegar o IP da maquina que o usuário esta acessando?
Exemplo, eu acesso da minha maquina o computador remoto, e quando eu for pegar o IP, eu pegar da minha maquina em vez do computador remoto?
Minha rotina é essa abaixo
Public Function GetIPAddress() As String Dim sAddr As String Dim shostname As String shostname = GetHostName() 'Dim IPHost As IPHostEntry = Dns.Resolve(shostname) Dim IPHost As IPHostEntry = Dns.GetHostEntry(shostname) Dim enderecos As IPAddress() = IPHost.AddressList sAddr = enderecos(0).ToString() GetIPAddress = sAddr End Function
Public Function GetHostName() As String Dim shostname As String shostname = System.Net.Dns.GetHostName GetHostName = shostname End Function
Obrigado desde já.
Respostas
-
Segue o link do projeto.
https://code.google.com/p/cassia/
Um tempo atrás utilizei essa biblioteca para fazer um relatório no terminal services e não sei se mudou muito. De qualquer maneira acho que já ajuda.
Para recuperar o IP você deve utilizar algo assim:
ITerminalServicesManager manager = new TerminalServicesManager();
ITerminalServicesSession session = manager.CurrentSession;
Console.WriteLine("IP: " + session.ClientIPAddress); Código VB:
Dim manager As ITerminalServicesManager = New TerminalServicesManager() Dim session As ITerminalServicesSession = manager.CurrentSession Console.WriteLine("IP: " + session.ClientIPAddress)
ROBERTOSLJUNIOR
- Editado robertosljunior terça-feira, 25 de agosto de 2015 03:58 Adicionado código VB.NET
- Sugerido como Resposta robertosljunior quinta-feira, 27 de agosto de 2015 03:30
- Marcado como Resposta Marcos SJ quinta-feira, 27 de agosto de 2015 14:12
-
Da uma olhada nesse exemplo usando api WTSQuerySessionInformation
Bruno Ferreira de Souza
MVP - Microsoft Valuable Professional
MCTS .NET Framework - Windows Applications
MCPD .NET Framework - Windows Applications
www.maestrodotnet.com.br
@BrunoMaestro- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 27 de agosto de 2015 12:22
- Marcado como Resposta Marcos SJ quinta-feira, 27 de agosto de 2015 14:12
Todas as Respostas
-
Você tem que pegar a sessão do usuário e assim consegue pegar o IP.
Você tem que utilizar um wrapper para as interfaces da API do Remote Desktop.
https://msdn.microsoft.com/en-us/library/aa383464(v=vs.85).aspx
Utilize uma biblioteca que se chama Cassia, ela facilita muito a vida. Procure no Nuget.
ROBERTOSLJUNIOR
-
-
Segue o link do projeto.
https://code.google.com/p/cassia/
Um tempo atrás utilizei essa biblioteca para fazer um relatório no terminal services e não sei se mudou muito. De qualquer maneira acho que já ajuda.
Para recuperar o IP você deve utilizar algo assim:
ITerminalServicesManager manager = new TerminalServicesManager();
ITerminalServicesSession session = manager.CurrentSession;
Console.WriteLine("IP: " + session.ClientIPAddress); Código VB:
Dim manager As ITerminalServicesManager = New TerminalServicesManager() Dim session As ITerminalServicesSession = manager.CurrentSession Console.WriteLine("IP: " + session.ClientIPAddress)
ROBERTOSLJUNIOR
- Editado robertosljunior terça-feira, 25 de agosto de 2015 03:58 Adicionado código VB.NET
- Sugerido como Resposta robertosljunior quinta-feira, 27 de agosto de 2015 03:30
- Marcado como Resposta Marcos SJ quinta-feira, 27 de agosto de 2015 14:12
-
-
-
Da uma olhada nesse exemplo usando api WTSQuerySessionInformation
Bruno Ferreira de Souza
MVP - Microsoft Valuable Professional
MCTS .NET Framework - Windows Applications
MCPD .NET Framework - Windows Applications
www.maestrodotnet.com.br
@BrunoMaestro- Sugerido como Resposta Ricardo Barbosa Cortes quinta-feira, 27 de agosto de 2015 12:22
- Marcado como Resposta Marcos SJ quinta-feira, 27 de agosto de 2015 14:12