Como desenvolver no C# um sistema que expire a cada 30 dias?
Pessoal, como iniciei nesta linguagem(c#) gostaria de saber como faço para que meu software EXPIRE a cada 30 dias? Desenvolvi um pequeno projeto e preciso testar o software com a tal validação por data. Se puderem conceder um exemplo, poxa, seria ótimamente ótimo.
Utilizo o Server Express 2005; Visual Studio 2010 Ultimate;
Utilizo o Server Express 2005; Visual Studio 2010 Ultimate;
Carlos Melo
Curtidas 1
Melhor post
Rodrigo Odasaki
31/03/2011
Olha eu nunca fiz isso, mas acredito que as possibilidades seriam essas:
1º Opção: Ajusta a expiração de acordo com a data do windows do clientes, porém o usuário pode simplesmente alterar a data...
2º Opção: Ajustar um time próprio na aplicação que após tantas horas de uso é bloqueado...
3º Opção: Sincronizar o acesso ao seu software por um servidor externo onde é necessário se autenticar..
A 2º opção é a mais válida.
Agora você pode partir para a prática.
1º Opção: Ajusta a expiração de acordo com a data do windows do clientes, porém o usuário pode simplesmente alterar a data...
2º Opção: Ajustar um time próprio na aplicação que após tantas horas de uso é bloqueado...
3º Opção: Sincronizar o acesso ao seu software por um servidor externo onde é necessário se autenticar..
A 2º opção é a mais válida.
Agora você pode partir para a prática.
GOSTEI 1
Mais Respostas
Carlos Melo
30/03/2011
Olha eu nunca fiz isso, mas acredito que as possibilidades seriam essas:
1º Opção: Ajusta a expiração de acordo com a data do windows do clientes, porém o usuário pode simplesmente alterar a data...
2º Opção: Ajustar um time próprio na aplicação que após tantas horas de uso é bloqueado...
3º Opção: Sincronizar o acesso ao seu software por um servidor externo onde é necessário se autenticar..
A 2º opção é a mais válida.
Agora você pode partir para a prática.
Opa!! Agradeço pela atenção.
Condordo contigo. A 2º Opção tem uma lógica um pouco mais adquada para que burlem.
Mas no C# não sei fazer; Tô tentando utilizar a lógica.
Qualquer novidade postaí...
abraçooo
1º Opção: Ajusta a expiração de acordo com a data do windows do clientes, porém o usuário pode simplesmente alterar a data...
2º Opção: Ajustar um time próprio na aplicação que após tantas horas de uso é bloqueado...
3º Opção: Sincronizar o acesso ao seu software por um servidor externo onde é necessário se autenticar..
A 2º opção é a mais válida.
Agora você pode partir para a prática.
GOSTEI 0
Jardel Sobrinho
30/03/2011
Eu utilizaria o registro do windows. Quando o programa fosse aberto ele iria verificar se existe uma chave que ficaria escondida dentro do registro do windows. Se ela não existi-se o programa a criaria e colocaria o data atual do sistema. Se ela já existi-se o programa pegaria a data que estava armazenada no registro e iria compará-la com a data atual do sistema. Se fosse maior que 30 dias, ele exibia uma mensagem de bloqueio, se a data do registro for maior que a data atual, quer dizer que a pessoa tentou voltar a data do windows para burlar a segurança e o programa seria bloqueado da mesma forma.
Para trabalhar com o registro do windows, olhe o seguinte tutorial: http://www.linhadecodigo.com.br/artigo/1318/Utilizando-o-Registro-do-Windows-para-gravar-informa%C3%A7%C3%B5es-com-CsharpNet.aspx.
Espero ter ajudado.
Para trabalhar com o registro do windows, olhe o seguinte tutorial: http://www.linhadecodigo.com.br/artigo/1318/Utilizando-o-Registro-do-Windows-para-gravar-informa%C3%A7%C3%B5es-com-CsharpNet.aspx.
Espero ter ajudado.
GOSTEI 0
Carlos Melo
30/03/2011
Eu utilizaria o registro do windows. Quando o programa fosse aberto ele iria verificar se existe uma chave que ficaria escondida dentro do registro do windows. Se ela não existi-se o programa a criaria e colocaria o data atual do sistema. Se ela já existi-se o programa pegaria a data que estava armazenada no registro e iria compará-la com a data atual do sistema. Se fosse maior que 30 dias, ele exibia uma mensagem de bloqueio, se a data do registro for maior que a data atual, quer dizer que a pessoa tentou voltar a data do windows para burlar a segurança e o programa seria bloqueado da mesma forma.
Para trabalhar com o registro do windows, olhe o seguinte tutorial: http://www.linhadecodigo.com.br/artigo/1318/Utilizando-o-Registro-do-Windows-para-gravar-informa%C3%A7%C3%B5es-com-CsharpNet.aspx.
Espero ter ajudado.
Opa!!
Falaaeee!!
Ajudou sim, mano. Pude amplicar um pouco mais a ideia. Era dessa forma que eu estava querendo desenvolver sim. A problemática é que nao sei como implemente um código para que o programa volte a funcionar, em outras palavras, o programa expiraria e eu iria gerar um código e o programa voltasse a operar normalmente.
Para trabalhar com o registro do windows, olhe o seguinte tutorial: http://www.linhadecodigo.com.br/artigo/1318/Utilizando-o-Registro-do-Windows-para-gravar-informa%C3%A7%C3%B5es-com-CsharpNet.aspx.
Espero ter ajudado.
GOSTEI 0
Jair Souza
30/03/2011
Eu usei este :
private void Expiracao_Sistema() { try { Microsoft.Win32.RegistryKey EncryptedKey; RSACryptoServiceProvider crypto = new RSACryptoServiceProvider(); EncryptedKey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\EncryptedDate"); object value = EncryptedKey.GetValue("EncryptedDate"); if (value == null) { EncryptedKey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\EncryptedDate"); string keyvalue = DateTime.Now.ToString("dd-MMM-yyyy"); byte[] messageBytes = Encoding.Unicode.GetBytes(keyvalue); string encryptedMessage = Convert.ToBase64String(messageBytes); EncryptedKey.SetValue("EncryptedDate", encryptedMessage); } else { byte[] encryptedMessage1 = Convert.FromBase64String(value.ToString()); string key = System.Text.Encoding.Unicode.GetString(encryptedMessage1); DateTime date = Convert.ToDateTime(key); dataDaExpiracao = date.AddDays(30); dataExpirou = dataDaExpiracao; if (dataAtual >= dataDaExpiracao) { btnFechar.Visible = true; lblMensagem.Visible = true; } else { pbWIDTH = picBoxPB.Width; pbHEIGTH = picBoxPB.Height; pbUnit = pbWIDTH / 100.0; pbCompleto = 0; bmp = new Bitmap(pbWIDTH, pbHEIGTH); t.Interval = 40; t.Tick += new EventHandler(this.t_Tick); t.Start(); } } } catch (Exception e) { MessageBox.Show(e.Message); } }
GOSTEI 1
Jair Souza
30/03/2011
...iii, somente 7 anos atrasado !
GOSTEI 0