IDENTIFICAR SE NO TERMINAL SERVICE
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?
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?
BOOOOOOAAAAA Marcos!!!! Que ovo de Colombo, hein? E eu pensando em API...[S55]
Valeu! Fico lhe devendo essa!
Valeu! Fico lhe devendo essa!
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)?
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.
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!!!
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.
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.
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