IDENTIFICAR SE NO TERMINAL SERVICE

USUARIO.EXCLUIDOS 12/09/2006 10:06:20
#170810
Olá meus sobrinhos!!!

Tio Max, após longo hiato, retorna com ribombante quesito!!!

Estou numa luta inglória, transformando um aplicativo com DAO + Access + Win98 para ADO + SQLServer + WinServer2003.

O autor do projeto original usou de todos os recursos da época, o que se resume a quase nada... Resolvi muitos dos problemas ligados ao uso de BD local, mas por essa eu não esperava:

A rede montada aqui tem 20 máquinas usando cada um uma instà¢ncia do servidor via Terminal Service. A coisa vai bem, mas a estrutura do aplicativo que estou atualizando utiliza Bds temporários (em Access, que eu mantive) e arquivos txt (para impressão, que também foram mantidos) que são criados na máquina do usuário (por exemplo em C:/backup.mdb ou C:/nota.txt). Tudo funciona muito bem, numa máquina só.

O problema é que, como todo mundo instancia o servidor, quando criam o BD temporário na raiz do C: na verdade estão criando o BD no C: do servidor. E o próximo a tentar criar esse BD na "sua máquina" vai ser impedido, porque na verdade estará tentando criar aquele mesmo BD no servidor. Da mesma forma, se duas máquinas pedirem a impressão do nota.txt, vão receber o mesmo documento, e aí vão me xingar pra caramba.

Tenho um problema de tempo: não vou nem levar em consideração soluções que me façam abandonar o esquema de BD temporário (levando esses dados para dentro do SQLServer) ou o uso de um gerador de relatórios. Isso porque meu cronograma já estourou.

O que pensei como solução é captar o ID da máquina que acessou o servidor. Se usar a API GetComputerName eu obtenho o ID do servidor... Eu preciso do "GetUsuarioName" que fica armazenado no servidor a cada login, para uni-lo ao arquivo (C:/backup.mdb passaria a C:/backupBALCAO1.mdb, C:/backupBALCAO2.mdb, etc), de modo que o aplicativo tivesse como identificar os arquivos que realmente lhe pertencessem.

Alguém já cruzou com essa API por aí? Ou tem outra forma de captar o ID original do usuário, mesmo usando uma instà¢ncia do Terminal Service?
USUARIO.EXCLUIDOS 12/09/2006 10:20:26
#170819
BOOOOOOAAAAA Marcos!!!! Que ovo de Colombo, hein? E eu pensando em API...[S55]

Valeu! Fico lhe devendo essa!
LIONHEART 12/09/2006 10:21:13
#170820
Outra coisa, vc não pode pegar o usuario do Sql Server? ou é todo mundo com o mesmo usuario, tipo o SA / DBO (Data Base Owner)?
USUARIO.EXCLUIDOS 12/09/2006 10:21:41
#170822
Resposta escolhida
E mais um detalhe... e para prevenir, se o arquivo já existir e estiver em uso, eu acrescento uma sequencia numérica no nome do arquivo.

USUARIO.EXCLUIDOS 12/09/2006 10:23:34
#170824
Valeu Lion! Vou checar essa API também. Vamos ver o que me dá retorno mais fácil aqui no código. Agradeço muito. O VBMania sempre rápido no gatilho!!!
USUARIO.EXCLUIDOS 12/09/2006 10:38:22
#170828
Bom. O exemplo do Lion identifica o usuário que fez o login, e nesse meu caso eu preciso mesmo é do ID da máquina (porque eu preciso acessar sempre os documentos gerados pela máquina e não pelo usuário). De qualquer maneira, o projeto já entrou no baú do Tio.

Obrigado pela atenção de todos, mas a solução do Marcos se encaixa no que eu preciso agora, então fecho o tópico.
LIONHEART 12/09/2006 10:38:39
#170829
Citação:

O VBMania sempre rápido no gatilho!!!



chega a ser tão rápido que até assusta.
Vc nem cria o tópico e já tem 5 respostas :-) rsrs
Tópico encerrado , respostas não são mais permitidas