TERMINAL SERVICE - PEGAR IP
Moderador: Moderadores
-
Reginaldo
- Usuário Nível 2

- Mensagens: 71
- Registrado em: 14 Jul 2004 08:06
- Localização: Lagoa da Prata - MG
- Contato:
TERMINAL SERVICE - PEGAR IP
Olá pessoal,
Já consegui instalar e testar o terminal server, usando como servidor o windows 2003 server. Porém, estou com um pequeno problema....
Preciso identificar a máquina que está acessando o sistema! Quando era Clipper, eu usava uma variável de ambiente (SET MAQUINA=01) no autoexec, porém no terminal service isso não funciona, pois irá me retornar sempre o mesmo SET MAQUINA, visto que a aplicação está sendo executada no servidor... Tentei uma rotina que me exibe o IP, mas também veio o mesmo problema, só me exibe o IP do servidor...
Alguém aqui conhece alguma solução para esse problema, ou seja, preciso saber qual é o IP do terminal e não do servidor...
Obrigado pela atenção, aguardo resposta..
Já consegui instalar e testar o terminal server, usando como servidor o windows 2003 server. Porém, estou com um pequeno problema....
Preciso identificar a máquina que está acessando o sistema! Quando era Clipper, eu usava uma variável de ambiente (SET MAQUINA=01) no autoexec, porém no terminal service isso não funciona, pois irá me retornar sempre o mesmo SET MAQUINA, visto que a aplicação está sendo executada no servidor... Tentei uma rotina que me exibe o IP, mas também veio o mesmo problema, só me exibe o IP do servidor...
Alguém aqui conhece alguma solução para esse problema, ou seja, preciso saber qual é o IP do terminal e não do servidor...
Obrigado pela atenção, aguardo resposta..
Reginaldo J. Silva
Analista de Sistemas
Analista de Sistemas
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: TERMINAL SERVICE - PEGAR IP
Tche, meu caso é parecido com o seu, eu uso arquivos temporarios em maquinas local...quando esta em rede...agora quando é executado pelo TS eu uso a função : Os_IsWtsClient() = .T. para saber que esta rodando no TS e dai muda a pasta temporaria dos arquivos que meu sistema gera.Reginaldo escreveu:Olá pessoal,
Já consegui instalar e testar o terminal server, usando como servidor o windows 2003 server. Porém, estou com um pequeno problema....
Preciso identificar a máquina que está acessando o sistema! Quando era Clipper, eu usava uma variável de ambiente (SET MAQUINA=01) no autoexec, porém no terminal service isso não funciona, pois irá me retornar sempre o mesmo SET MAQUINA, visto que a aplicação está sendo executada no servidor... Tentei uma rotina que me exibe o IP, mas também veio o mesmo problema, só me exibe o IP do servidor...
Alguém aqui conhece alguma solução para esse problema, ou seja, preciso saber qual é o IP do terminal e não do servidor...
Obrigado pela atenção, aguardo resposta..
Sugestão...quando seu sistema indentificar que esta no TSCLIENT ele gera um MAQUINA a mais do que já tem...claro que vc tera que criar um DBF por exemplo para os usuario na rede confirmar que estão logado....nessa função...vc soh bloqueia um registro e reserva o proximo que não estiver bloqueado...entendeu ?
Espero pelomenos ter dado uma luz.
Abraços
Leonardo Machado
MAQUINA=vTeste+1
Endif
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
TerraSoftware
- Usuário Nível 3

- Mensagens: 353
- Registrado em: 28 Jul 2004 13:14
- Localização: Cianorte-PR
- Contato:
-
Reginaldo
- Usuário Nível 2

- Mensagens: 71
- Registrado em: 14 Jul 2004 08:06
- Localização: Lagoa da Prata - MG
- Contato:
Caros colegas,
Obrigado pela atenção!
Leonardo,
Não entendi o porque da função Os_IsWtsClient() = .T.
TerraSoftware,
A getenv("CLIENTNAME") no terminal service retorna o nome da máquina, beleza, já me ajuda... porém na rede local retorna "console", já a getenv("SESSIONNAME"), na rede local me retorna também "console", no terminal service, retorna: RDP-Tcp#... isso eu não entendi...
Posso conseguir o que quero com a variável CLIENTNAME... Mas, se alguém tiver uma forma de poder pegar o IP, seria melhor...
Obrigado pela atenção de todos,
Obrigado pela atenção!
Leonardo,
Não entendi o porque da função Os_IsWtsClient() = .T.
TerraSoftware,
A getenv("CLIENTNAME") no terminal service retorna o nome da máquina, beleza, já me ajuda... porém na rede local retorna "console", já a getenv("SESSIONNAME"), na rede local me retorna também "console", no terminal service, retorna: RDP-Tcp#... isso eu não entendi...
Posso conseguir o que quero com a variável CLIENTNAME... Mas, se alguém tiver uma forma de poder pegar o IP, seria melhor...
Obrigado pela atenção de todos,
Reginaldo J. Silva
Analista de Sistemas
Analista de Sistemas
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Tche, segue abaixo um exemplo usando o Os_IsWtsClient() = .T.:Reginaldo escreveu:Caros colegas,
Obrigado pela atenção!
Leonardo,
Não entendi o porque da função Os_IsWtsClient() = .T.
Código: Selecionar todos
IF Os_IsWtsClient() = .T.
Sua Rotina que vai diferenciar a MAQUINA.(obs:cria um dbf para validar as maquinas se for prescisso)
ENDIFCódigo: Selecionar todos
PROCEDURE MAIN()
LOCAL nResult:= 0, a, x
CLS
? 'Checking Windows Version & Platform Details'
? '-------------------------------------------'
?
?? 'Platform is: '
IF OS_ISWINNT()
?? "VER_PLATFORM_WIN32_NT. i.e. NT, 2000, XP or 2003 Server"
ELSEIF OS_ISWIN9X()
?? "VER_PLATFORM_WIN32_WINDOWS. i.e. 95, 98 or ME"
ELSE
?? "UNKNOWN?????????"
ENDIF
?
? 'Release Version of Windows is: '
DO CASE
CASE OS_ISWIN95()
?? "95"
CASE OS_ISWIN98()
?? "98"
CASE OS_ISWINME()
?? "ME"
CASE OS_ISWINNT351()
?? "NT3.51"
CASE OS_ISWINNT4()
?? "NT4.00"
CASE OS_ISWIN2000()
?? "2000"
CASE OS_ISWINXP()
?? "XP"
CASE OS_ISWIN2003()
?? "2003 Server"
OTHERWISE
?? "UNKNOWN"
ENDCASE
?
? 'Details of version'
a:= os_versioninfo()
IF !EMPTY( a )
? " MajorVersion: ", a[ 1 ]
? " MinorVersion: ", a[ 2 ]
? " BuildNumber: ", a[ 3 ]
? " PlatformId: ", a[ 4 ]
? " ExtraData: ", a[ 5 ]
ENDIF
?
IF OS_ISWTSCLIENT()
? "Running as a Windows Terminal Server Client"
ELSE
? "NO Windows Terminal Server Client detected"
ENDIF
?
? 'Checking and setting network for Windows'
? '----------------------------------------'
?
IF OS_ISWTSCLIENT() .AND. !OS_NETREGOK() // Note: If Windows Terminal Server client DONOT
// attempt to set registry.
? 'Registry on WTS server is not set correctly for networking.'
? 'Please check with System Administrator to set the registry correctly.'
ELSEIF OS_NETREGOK( .T. )
? 'Registry set OK for networking'
ELSE
? 'Failed to set registry - May need "Administrator" rights'
ENDIF
?
IF !OS_NETVREDIROK( @nResult )
? 'Invalid RVREDIR.VXD file installed'
IF nResult = 950
? 'You need file VREDRUPD.EXE if your vredir.vxd is dated "09:50:00"'
ELSEIF nResult == 1111
? 'You need file VRDRUPD.EXE if your vredir.vxd is dated "11:11:10"'
ENDIF
ENDIF
WAIT
RETURN
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql