#include #include #include #include SmartPointer Registration::smRegistration; Registration::Registration() : mRegistrationKeyName(STRING_REGISTRATIONKEYNAME), mSettingsLicenseKey(STRING_SETTINGSLICENSE) { } Registration::~Registration() { } Registration &Registration::getInstance() { if(!smRegistration.isOkay()) { smRegistration=::new Registration(); smRegistration.disposition(PointerDisposition::Delete); } return *smRegistration; } bool Registration::hasGID(void)const { FileHandle gidFile; return gidFile.open("install.gid",FileHandle::Read,FileHandle::ShareRead,FileHandle::Open,FileHandle::Hidden); } bool Registration::hasLicense(void)const { RegKey regKeyRegistration; String strLicense; if(!regKeyRegistration.openKey(mRegistrationKeyName))return false; regKeyRegistration.queryValue(mSettingsLicenseKey,strLicense); return strLicense.isNull()?false:true; } bool Registration::getLicense(License &license)const { String strLicense; RegKey regKeyRegistration; if(!regKeyRegistration.openKey(mRegistrationKeyName))return false; regKeyRegistration.queryValue(mSettingsLicenseKey,strLicense); license.fromString(strLicense); return true; } bool Registration::applyLicense(Block &strLicenseLines) { RegKey regKeyRegistration; License license; license.fromLines(strLicenseLines); if(!license.isValid())return false; if(!regKeyRegistration.openKey(mRegistrationKeyName)) { regKeyRegistration.createKey(mRegistrationKeyName,""); regKeyRegistration.openKey(mRegistrationKeyName); } regKeyRegistration.setValue(mSettingsLicenseKey,license.getUUEncodedLicense()); return true; } bool Registration::applyLicense(const String &uuencodedLicense) { RegKey regKeyRegistration; License license; license.fromString(uuencodedLicense); if(!license.isValid())return false; if(!regKeyRegistration.openKey(mRegistrationKeyName)) { regKeyRegistration.createKey(mRegistrationKeyName,""); regKeyRegistration.openKey(mRegistrationKeyName); } regKeyRegistration.setValue(mSettingsLicenseKey,uuencodedLicense); return true; } bool Registration::create30DayLicense(void)const { createLicense(30); return true; } bool Registration::create15DayLicense(void)const { createLicense(15); return true; } bool Registration::createPermanentLicense(void)const { VersionInfo versionInfo; SystemTime issueDate; String strLicense; String strVersion; RegKey regKeyRegistration; FileHandle gidFile; if(!regKeyRegistration.openKey(mRegistrationKeyName)) { regKeyRegistration.createKey(mRegistrationKeyName,""); regKeyRegistration.openKey(mRegistrationKeyName); } strVersion=versionInfo.getProductVersionString(); strVersion.removeTokens(", "); strVersion.upper(); strLicense=License::generate(strVersion,issueDate,License::Permanent,0); regKeyRegistration.setValue(mSettingsLicenseKey,strLicense); gidFile.open("install.gid",FileHandle::Write,FileHandle::ShareRead,FileHandle::Overwrite,FileHandle::Hidden); return true; } License Registration::generatePermanentLicense(void)const { VersionInfo versionInfo; SystemTime issueDate; String strLicense; String strVersion; License license; strVersion=versionInfo.getProductVersionString(); strVersion.removeTokens(", "); strVersion.upper(); strLicense=License::generate(strVersion,issueDate,License::Permanent,0); license.fromString(strLicense); return license; } bool Registration::removeLicense(void) { RegKey regKeyRegistration; return regKeyRegistration.deleteKey(mRegistrationKeyName); } bool Registration::createLicense(int days)const { VersionInfo versionInfo; SystemTime issueDate; String strLicense; String strVersion; RegKey regKeyRegistration; FileHandle gidFile; if(!regKeyRegistration.openKey(mRegistrationKeyName)) { regKeyRegistration.createKey(mRegistrationKeyName,""); regKeyRegistration.openKey(mRegistrationKeyName); } strVersion=versionInfo.getProductVersionString(); strVersion.removeTokens(", "); strVersion.upper(); strLicense=License::generate(strVersion,issueDate,License::Expires,days); regKeyRegistration.setValue(mSettingsLicenseKey,strLicense); gidFile.open("install.gid",FileHandle::Write,FileHandle::ShareRead,FileHandle::Overwrite,FileHandle::Hidden); return true; }