2014-10-17 5 views
0

면허는 어떻게 1 년 만에 만들 수 있습니까? 프로그램을 활성화 할 때 레지스트리에 현재 날짜를 추가합니다. 각 실행마다 레지스트리가 존재하는지 확인합니다. 레지스트리가 존재하면 내 애플리케이션을 사용할 수 있습니다. 그렇지 않으면 활성화하라는 메시지가 나타납니다.년 이후 레지스트리 삭제 Vb net

내 라이센스가 1 년 동안 만 작동하도록 만들고 싶습니다.

나는

Public Sub Licence_Check() 


    Dim licenca As Date 
      Dim days As Integer 
      licenca = CDate(My.Computer.Registry.GetValue("HKEY_CURRENT_USER\tFull", "tFull", Nothing)) 
     days = CInt(365 - (DateDiff(DateInterval.Day, licenca, Now))) 

     If days <= 0 Then 
      My.Computer.Registry.CurrentUser.DeleteValue("tFull") 
      pbInfo.Value = pbInfo.Maximum 
      gpbInfo.Text = "One year Licence OVER" 
      RbContinue.Enabled = False 
     End If 
End Sub 
+1

이 접근법의 약점을 알고 있습니까? 프로세스 모니터를 사용하여 프로그램에서이 정보를 저장하는 곳을 발견하고 변경하는 것은 문제입니다. – Steve

+0

@Steve이 프로그램은 컴퓨터 보호를 필요로하지 않으므로 컴퓨터를 사용합니다. – Anel

답변

0

이미이 방법의 약점에 대해 경고 한 시도했다, 그러나 이것은 당신이 License_Check 위의 응용 프로그램을 저장해야

Public Sub Licence_Check() 
    Dim licenca As Date 
    Using tempKey = My.Computer.Registry.CurrentUser.OpenSubKey("Software\YourAppNameHere", true) 
     licenca = CDate(tempKey.GetValue("InstallDate", Nothing)) 
     Dim limit = licenca.AddYears(1) 
     if limit < DateTime.Today 
      tempKey.DeleteValue("InstallDate") 
      Console.WriteLine ("One year Licence OVER") 
     End If 
    End Using 
End Sub 

공지 사항을 쓰기 수있는 방법입니다 정보를 SOFTWARE 하위 키의 하위 키에 있고 루트 HKEY_CURRENT_USER 바로 아래에 있지 않습니다. 그런 다음 적절한 하위 키를 열어 쓰기 권한을 요청하고 최종적으로 가치를 읽어야합니다.

날짜를 확인하려면 읽은 값에 1 년을 더하고 오늘을 확인하십시오. 삭제하려면 열린 하위 키의 DeleteValue 메서드를 사용해야합니다.

또한 사용자가 사용자에게 적용해야하는 검사가 아닌 것으로 가정합니다. 대신 전체 응용 프로그램에 적용 할 수있는 검사입니다. 이 경우 미리 정의 된 My.Computer.Registry.LocalMachine 레지스트리 키를 사용해야합니다.