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