Pergunta

No meu programa de desktop, quero verificar isso para ver se o usuário colocou o relógio de volta.

Para fazer isso, comparo o registro de data e hora de certos arquivos do sistema operacional com a data atual do computador. Se houver algum atrás do que o computador pensa ser a data atual, ele deve ter colocado o relógio de volta.

Para o Windows XP, eu tenho usado arquivos como:

c:\win386.swp
c:\windows\user.dat
and several others.

Duas questões:

  1. É uma maneira decente de fazer isso ou há algo melhor?

  2. (Supondo que a resposta para 1 seja "decente") Quais seriam alguns bons arquivos do Windows Vista e Windows 7 para comparar?


Conclusão: Priyank disse algo óbvio que me iludiu: em vez de usar qualquer arquivo do sistema, a maneira mais fácil e simples pode ser apenas usar o registro de data e hora do seu próprio programa. Afinal, a data em que foi instalada é exatamente a data em que você deseja que seu teste comece.

Acontece que suas respostas e minha pesquisa de outras perguntas relacionadas ao Stackoverflow e artigos mencionados me levaram a decidir sobre um esquema muito mais simples. Meus usuários de avaliação já precisam obter uma chave para usar o teste. Eu tenho a data registrada incorporada à chave. Eu realmente não tenho que verificar para definir o relógio de volta. Em vez disso, posso ver se o horário atual é entre a data registrada e a data registrada mais n dias.

Se eles querem se dar ao trabalho de contornar esse esquema, deixe -os. Eu concordo que essas pessoas não pagariam de qualquer maneira. Faça do seu programa algo que vale a pena que as pessoas gostem e querem usar e a maioria pagará.

Foi útil?

Solução

Os arquivos do Windows sempre terão data anterior, o melhor é verificar a criação ou a data modificada do seu programa com a data do sistema. Ou sempre que seu programa pare, certifique -se de observar o registro de data e hora e compará -lo com a próxima vez que você iniciar seu programa, e sempre há NTP: http://en.wikipedia.org/wiki/network_time_protocol

Outras dicas

Uma maneira melhor de fazer isso no IMHO seria armazenar o registro atual no registro na primeira vez que seu programa é executado e compare isso com o registro de data e hora atual na próxima execução e atualize o registro de data e hora, se estiver tudo bem.

Esta não é uma resposta direta, apenas para oferecer alguma opinião e referências. Muito tempo para eu acrescentar como comentário.

Se o objetivo é criar um software com tempo limitado para uso de demonstração/avaliação, precisamos encontrar um equilíbrio entre o quanto você o implementa e a tendência para os usuários 'hackear' passá-lo.

Costumo dizer às pessoas, se seu software atrair hackers, provavelmente é algo útil/bom. Não há sentido em proteger um software que ninguém ache útil.

De qualquer forma, a conversa filosófica de lado, abaixo estão algumas boas leituras sobre este tópico:

Como implementar o estudo com limitação de tempo no fórum de Joel
TEMPO LIMITADO TEMPO LIMITE SO
Precisa de conselhos sobre a implementação de um estudo com limite de tempo SO

Uma opção seria obter a data de um serviço da Web ou servidor de tempo. O problema aqui é que isso só funciona se houver conexão à Internet disponível; portanto, esse seria apenas um método complementar para um mais seguro.

O Windows fornece APIs para notificação de alterações no tempo do sistema. Um por exemplo é o controle sysinfo.ocx ActiveX fornecido aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top