PONTO ELETRONICO

ALTAIR148 30/03/2012 08:56:24
#398747
Bom dia,

Pessoal é o seguinte, estou em fase final do desenvolvimento de um sistema de Ponto Eletrônico com marcação feita através do computador, desde o início eu venho pensando em um problema bem comum que pode me acontecer é de que tipo o funcionário, altere a hora e a data do computador, então me veio a ideia de pegar a hora da internet, só que vem outro detalhe que se não tiver internet ele não vai pegar o horário. Alguém tem alguma sugestão do que eu posso fazer?


Obrigado.
KERPLUNK 30/03/2012 09:00:24
#398748
Crie um programa com um timer, criando um relógio independente do windows.
ALTAIR148 30/03/2012 09:01:25
#398749
Mas por exemplo esse timer teria que pegar a hora de algum lugar, ou não?
KERPLUNK 30/03/2012 09:12:42
#398751
Não. Você com o timer, vai ficar incrementando uma variável a cada período de tempo(por segundo talvez) fazendo assim o seu próprio relógio independente. Uma alternativa simples é fazer um serviço do windows que controle isso.
Você coloca o serviço para rodar, acerta a hora na primeira vez e pronto. Para saber [Ô]que horas são[Ô] quando o computador ligar, faça assim:
- Como seria um serviço do windows, ele iniciaria junto com o windows, antes mesmo da interface, o mesmo para encerrar. Isso te dá a possibilidade de fazer um [Ô]proporcional[Ô]. Explico: Digamos que o seu relógio esteja acertado em 18:00, mas o espertino do usuário, acertou o relógio do windows para 19:00 pra tentar ganhar hora extra. Quando desligar o windows(e consequentemente, seu serviço), calcule a diferença de um e de outro(1 hora). Quando o windows iniciar de novo, ele ainda vai estar uma hora adiantado, mas como você gravou a proporção, acerte o relógio do seu programa.

Não sei se conseguiu entender a idéia, mas é o único jeito que me vêm à mente quando não é possível o uso de um relógio confiável(o do windows). Não que ele seja ineficiente, mas tem essa possibilidade de ser ajustado livremente.
Já vi algo assim ser feito em algumas empresas...
JONATHANSTECKER 30/03/2012 09:18:00
#398752
E se você pegar o horário do servidor ao invés da maquina?
SELECT NOW() AS DATA
ALTAIR148 30/03/2012 09:18:01
#398753
Bom, entendi, agora uma outra dúvida por exemplo, pode ser que tenha o sistema instalado em mais máquinas da empresa, todas ligadas a um único servidor, então para ficar mais garantido seria criar esse serviço e fazer a comunicação dele com as outras estações através de socket?
KERPLUNK 30/03/2012 09:23:04
#398755
Resposta escolhida
Não precisa ser por socket, você pode fazer um WCF e consumir ele de toda a rede interna...

JONATHANSTECKER, se tem a desconfiança por parte do usuário, não adianta ser do servidor ou da estação, eles alteram mesmo...
ALTAIR148 30/03/2012 09:27:19
#398757
Citação:

:
E se você pegar o horário do servidor ao invés da maquina?

SELECT NOW() AS DATA



Jonathan, é igual o KERPLUNK disse ai seria só o funcionário ir e alterar a data do maquina servidora e ia burlar o sistema da mesma forma.
JONATHANSTECKER 30/03/2012 09:29:01
#398760

Aqui na empresa usuário não tem acesso a alterar a hora do sistema não.
Essa alteração pode causar muitos danos em sistemas não previsto!
ALEXPASSOS 30/03/2012 09:36:27
#398762
Esse sistema vai ficar instalado em computador só né? Então não teria como bloquear a alteração da data e hora como se estivesse em um domínio de rede.
ALTAIR148 30/03/2012 09:40:55
#398763
Então até tive verificando isso aí também, pode ser uma outra coisa que eu venha a implementar também, pesquisando na internet encontrei também um equipamento chamado acho que HASP, esse produto é como se fosse um Token e nele tem um relógio blindado que não é possível fazer a alteração do horário se não me engano é possível fazer mas desde que com uma senha, e ele tem DLL[ô]s que podem ser integradas ao sistema para que o sistema possa interagir com ele. Ele tem um custo que eu poderia repassar ao cliente também se ele quiser mais segurança. Bom mas a princípio creio que o ideal seria cria o serviço do windows para manter a integridade, ou até mesmo tentar, porque é uma questão complicada.

Valeu ai e muito obrigado.
Tópico encerrado , respostas não são mais permitidas