// Retorna true os dados da localização do computador estão de acordo com a licença (ou seja: existe cadastro preparado para liberar essa licença e a localização está de acordo) public bool ActivateLicense() { // Gera nova chave para a criptografia string SaltKey = Guid.NewGuid().ToString(); string[] result; // Parâmetros para ativação da licença string urlParameters = string.Format("?TOKEN={0}&CSERIALK={1}&MHOST={2}&MACADDRESS={3}&AUSER={4}&LICADDRESS={5}&MODE=9", LicToken, dataLicense.SerialKey, dataLicense.ClientIP, dataLicense.CustomerMACAddress, dataLicense.UserName, dataLicense.LicenseAddress); // Evoca o serviço de ativação // Retorna true se a licença foi validada e ativada isLicenseDistanceValid = LicenseWS.get_CustomerReadyForActivation(urlParameters, dataLicense.Proxy, out result, out exceptionMessage); // Caso a licença não tenha sido ativada: é possível que a licença tenha sido desinstalada, então verifica-se se a licença foi instalada pelo // computador atual e, se foi: permite reativar a licença na máquina. if (!isLicenseDistanceValid) { try { // Verifica se a licença ainda é válida (via site) caso a licença tenha sido ativada e depois o sistema tenha sido desinstalado // Logo: se o sistema foi desinstalado e agora está sendo instalado novamente: deve apenas verificar se a licença é válida via site isLicenseDistanceValid = IsLicenseActivatedOnline(out result); } catch { // Caso existe algum erro de conexão: mantém a licença válida, pois a data do registro está ok isLicenseDistanceValid = false; } } if (isLicenseDistanceValid) { // Seta os dados retornados pela licença (automaticamente são setados no Config também) DateTime dateValue; dataLicense.CustomerWord = result[1]; if (DateTime.TryParse(result[2], out dateValue)) { dataLicense.DueDate = dateValue; } else { return(false); } dataLicense.CustomerID = result[3]; dataLicense.CustomerMachineID = result[4]; dataLicense.IsTrialLicense = result[5].Substring(0, 1) == "T"; // Salva as inormações no registro string regInfo = result[2] + "|" + dataLicense.CustomerWord + "|" + dataLicense.CustomerID + "|" + dataLicense.CustomerMachineID + "|" + dataLicense.IsTrialLicense.ToString() + "|" + dataLicense.SerialKey; regInfo = CriptoRijndael.Encrypt(regInfo, SaltKey, 0); WinRegistry ureg = new WinRegistry(); ureg.Write("UdyatRegister", regInfo); ureg.Write("MacSalt", SaltKey); ureg.Write("UdyatTrial", dataLicense.IsTrialLicense.ToString()); ureg.Write("customerWord", dataLicense.CustomerWord); ureg.Write("customerMN", dataLicense.CustomerMachineID); ureg.Write("customer", dataLicense.CustomerID); return(true); } return(false); }
/// <summary> /// Verifica se a licença está registrada e se ainda é válida /// </summary> /// <param name="TestMode"></param> /// <returns></returns> public bool IsLicenseActivated(bool TestMode) { if (TestMode) { return(true); } bool isActivated = false; WinRegistry ureg = new WinRegistry(); if (ureg.KeyExists("MacSalt")) { string SaltKey = ureg.Read("MacSalt"); if (ureg.KeyExists("UdyatRegister")) { string regInfo = ureg.Read("UdyatRegister"); regInfo = CriptoRijndael.Decrypt(regInfo, SaltKey, 0); if (regInfo.Length > 0) { string[] licData = regInfo.Split('|'); if (licData.Count() == 6) { DateTime dueDate; if (DateTime.TryParse(licData[0], out dueDate)) { if (mainClass.internalClock <= dueDate) { bool IsTrial = false; bool auxIsTrial; if (bool.TryParse(licData[4], out auxIsTrial)) { IsTrial = auxIsTrial; } ureg.Write("UdyatTrial", IsTrial); isActivated = licData[5] == dataLicense.SerialKey; } } } } } } return(isActivated); }