KeyGenerator 1.6c6 :
- possibilità di caricare file Kge - generazione file lic.
This commit is contained in:
+11
-4
@@ -29,9 +29,9 @@ using namespace std ;
|
||||
|
||||
//--------------------------- Define -----------------------------------------
|
||||
#if defined( NDEBUG)
|
||||
#define STR_EXE "KeyGeneratorR32.exe"
|
||||
#define STR_EXE "KeyGeneratorR32.exe"
|
||||
#else
|
||||
#define STR_EXE "KeyGeneratorD32.exe"
|
||||
#define STR_EXE "KeyGeneratorD32.exe"
|
||||
#endif
|
||||
|
||||
|
||||
@@ -83,11 +83,18 @@ CKeyGeneratorApp::InitInstance( void)
|
||||
|
||||
// verifico la protezione
|
||||
string sKey = GetPrivateProfileStringUtf8( "General", "Key", "", m_pszProfileName) ;
|
||||
if ( VerifyKey( sKey, 1230, 15, 01) != KEY_OK)
|
||||
if ( VerifyKey( sKey, 1230, 16, 10) != KEY_OK)
|
||||
return FALSE ;
|
||||
|
||||
// gestione linea di comando
|
||||
string sFileToOpen ;
|
||||
CCommandLineInfo cmdInfo ;
|
||||
ParseCommandLine( cmdInfo) ;
|
||||
if ( cmdInfo.m_nShellCommand == CCommandLineInfo::FileOpen)
|
||||
sFileToOpen = WtoA( cmdInfo.m_strFileName) ;
|
||||
|
||||
// Dialog interface
|
||||
CKeyGeneratorDlg dlg ;
|
||||
CKeyGeneratorDlg dlg( sFileToOpen) ;
|
||||
m_pMainWnd = &dlg ;
|
||||
dlg.DoModal() ;
|
||||
|
||||
|
||||
Binary file not shown.
+93
-31
@@ -21,6 +21,7 @@
|
||||
#include "/EgtDev/Include/EGnStringUtils.h"
|
||||
#include "/EgtDev/Include/EGnStringConverter.h"
|
||||
#include "/EgtDev/Include/EgtIniFile.h"
|
||||
#include "/EgtDev/Include/SELkKeyProc.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
@@ -108,10 +109,12 @@ END_MESSAGE_MAP()
|
||||
//----------------------------------------------------------------------------
|
||||
// CKeyGeneratorDlg dialog
|
||||
//----------------------------------------------------------------------------
|
||||
CKeyGeneratorDlg::CKeyGeneratorDlg( CWnd* pParent)
|
||||
CKeyGeneratorDlg::CKeyGeneratorDlg( const string& sFileToOpen, CWnd* pParent)
|
||||
: CDialogEx( IDD_KEYGENERATOR_DIALOG)
|
||||
{
|
||||
m_hIcon = AfxGetApp()->LoadIcon( IDR_MAINFRAME) ;
|
||||
// eventuale file da caricare all'avvio
|
||||
m_sFileToOpen = sFileToOpen ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -119,7 +122,8 @@ BEGIN_MESSAGE_MAP( CKeyGeneratorDlg, CDialogEx)
|
||||
ON_WM_SYSCOMMAND()
|
||||
ON_WM_PAINT()
|
||||
ON_WM_QUERYDRAGICON()
|
||||
ON_BN_CLICKED( ID_GENER, OnGenerate)
|
||||
ON_BN_CLICKED( IDC_OPENFILE, OnOpenFile)
|
||||
ON_BN_CLICKED( IDC_GENER, OnGenerate)
|
||||
ON_WM_CLOSE()
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
@@ -129,7 +133,7 @@ CKeyGeneratorDlg::OnInitDialog( void)
|
||||
{
|
||||
CDialogEx::OnInitDialog() ;
|
||||
|
||||
// Add "About..." menu item to system menu.
|
||||
// Add "About..." menu item to system menu.
|
||||
|
||||
// IDM_ABOUTBOX must be in the system command range.
|
||||
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
||||
@@ -147,26 +151,20 @@ CKeyGeneratorDlg::OnInitDialog( void)
|
||||
}
|
||||
}
|
||||
|
||||
// Set the icon for this dialog. The framework does this automatically
|
||||
// when the application's main window is not a dialog
|
||||
// Set the icon for this dialog. The framework does this automatically
|
||||
// when the application's main window is not a dialog
|
||||
SetIcon( m_hIcon, TRUE) ; // Set big icon
|
||||
SetIcon( m_hIcon, FALSE) ; // Set small icon
|
||||
|
||||
// Assegno ultimi valori inseriti
|
||||
string sCust = GetPrivateProfileStringUtf8( "Data", "Customer", "", AfxGetApp()->m_pszProfileName) ;
|
||||
GetDlgItem( IDC_CUSTOMER)->SetWindowTextW( stringtoW( sCust)) ;
|
||||
string sMachId = GetPrivateProfileStringUtf8( "Data", "MachineId", "", AfxGetApp()->m_pszProfileName) ;
|
||||
GetDlgItem( IDC_MACHID)->SetWindowTextW( stringtoW( sMachId)) ;
|
||||
int nSelProd = GetPrivateProfileInt( "Data", "SelProduct", 0, AfxGetApp()->m_pszProfileName) ;
|
||||
((CComboBox*)GetDlgItem( IDC_PROD))->SetCurSel( nSelProd) ;
|
||||
int nSelVer = GetPrivateProfileInt( "Data", "SelVer", 0, AfxGetApp()->m_pszProfileName) ;
|
||||
((CComboBox*)GetDlgItem( IDC_VER))->SetCurSel( nSelVer) ;
|
||||
int nSelLev = GetPrivateProfileInt( "Data", "SelLev", 0, AfxGetApp()->m_pszProfileName) ;
|
||||
((CComboBox*)GetDlgItem( IDC_LEV))->SetCurSel( nSelLev) ;
|
||||
int nExpTime = GetPrivateProfileInt( "Data", "ExpTime", 0, AfxGetApp()->m_pszProfileName) ;
|
||||
if ( nExpTime != 0)
|
||||
((CDateTimeCtrl*)GetDlgItem( IDC_EXPIRATION))->SetTime( &CTime( nExpTime)) ;
|
||||
// eventuale apertura o esecuzione di file all'avvio
|
||||
if ( ! m_sFileToOpen.empty()) {
|
||||
// leggo il file
|
||||
if ( LoadFile( m_sFileToOpen.c_str()))
|
||||
return TRUE ;
|
||||
}
|
||||
|
||||
// Assegno ultimi valori inseriti
|
||||
LoadFile( WtoA( AfxGetApp()->m_pszProfileName)) ;
|
||||
return TRUE ; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
|
||||
@@ -228,6 +226,69 @@ CKeyGeneratorDlg::OnClose( void)
|
||||
EndDialog( IDCANCEL) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
CKeyGeneratorDlg::OnOpenFile( void)
|
||||
{
|
||||
// visualizzo il dialogo di scelta file
|
||||
CFileDialog dlg( TRUE, L"*.Kge", NULL,
|
||||
OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY|OFN_NOCHANGEDIR,
|
||||
L"Key info EgalTech (*.Kge)|*.Kge||", NULL, 0, FALSE) ;
|
||||
|
||||
// imposto il direttorio iniziale
|
||||
wstring wsDir = stringtoW( GetPrivateProfileStringUtf8( "General", "DataDir", "", AfxGetApp()->m_pszProfileName)) ;
|
||||
if ( ! wsDir.empty())
|
||||
dlg.m_ofn.lpstrInitialDir = wsDir.c_str() ;
|
||||
|
||||
// lancio il dialogo di scelta file
|
||||
if ( dlg.DoModal() != IDOK)
|
||||
return ;
|
||||
|
||||
// leggo il file
|
||||
LoadFile( WtoA( dlg.GetPathName())) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
CKeyGeneratorDlg::LoadFile( const char* szFile)
|
||||
{
|
||||
// verifico validità nome file
|
||||
if ( szFile == nullptr || szFile[0] == '\0')
|
||||
return false ;
|
||||
// leggo indice ultimo salvataggio
|
||||
int nLast = GetPrivateProfileInt( "Index", "Last", 0, szFile) ;
|
||||
// carico i dati del file
|
||||
string sSec = "Licence" ;
|
||||
if ( nLast > 0)
|
||||
sSec += ToString( nLast) ;
|
||||
string sCust = GetPrivateProfileStringUtf8( sSec.c_str(), "Customer", "", szFile) ;
|
||||
GetDlgItem( IDC_CUSTOMER)->SetWindowTextW( stringtoW( sCust)) ;
|
||||
string sMachId = GetPrivateProfileStringUtf8( sSec.c_str(), "MachineId", "", szFile) ;
|
||||
GetDlgItem( IDC_MACHID)->SetWindowTextW( stringtoW( sMachId)) ;
|
||||
int nProd = GetPrivateProfileInt( sSec.c_str(), "Product", 0, szFile) ;
|
||||
((CComboBox*)GetDlgItem( IDC_PROD))->SetCurSel( nProd - 1230) ;
|
||||
int nVer = GetPrivateProfileInt( sSec.c_str(), "Ver", 0, szFile) ;
|
||||
((CComboBox*)GetDlgItem( IDC_VER))->SetCurSel( nVer - 15) ;
|
||||
int nLev = GetPrivateProfileInt( sSec.c_str(), "Lev", 0, szFile) ;
|
||||
((CComboBox*)GetDlgItem( IDC_LEV))->SetCurSel( nLev - 1) ;
|
||||
int nExpTime = GetPrivateProfileInt( sSec.c_str(), "ExpDays", 0, szFile) ;
|
||||
if ( nExpTime != 0)
|
||||
((CDateTimeCtrl*)GetDlgItem( IDC_EXPIRATION))->SetTime( &CTime( nExpTime * 24 * 3600)) ;
|
||||
int nOpt1 = GetPrivateProfileInt( sSec.c_str(), "Opt1", 0, szFile) ;
|
||||
for ( int i = IDC_CHECK01, j = 0 ; i <= IDC_CHECK16 ; ++ i, ++ j) {
|
||||
if ( ( nOpt1 & ( 1 << j)) != 0)
|
||||
((CButton*)GetDlgItem( i))->SetCheck( BST_CHECKED) ;
|
||||
else
|
||||
((CButton*)GetDlgItem( i))->SetCheck( BST_UNCHECKED) ;
|
||||
}
|
||||
int nOpt2 = GetPrivateProfileInt( sSec.c_str(), "Opt2", 0, szFile) ;
|
||||
// check non ancora inseriti nel dialogo
|
||||
int nOptExpTime = GetPrivateProfileInt( sSec.c_str(), "OptExpDays", 0, szFile) ;
|
||||
if ( nOptExpTime != 0)
|
||||
((CDateTimeCtrl*)GetDlgItem( IDC_OPT_EXPIR))->SetTime( &CTime( nOptExpTime * 24 * 3600)) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
CKeyGeneratorDlg::OnGenerate( void)
|
||||
@@ -242,7 +303,7 @@ CKeyGeneratorDlg::OnGenerate( void)
|
||||
AfxMessageBox( L"Dati cliente vuoto o con caratteri vietati (\\/:*?\"<>|)") ;
|
||||
return ;
|
||||
}
|
||||
WritePrivateProfileStringUtf8( "Data", "Customer", sCust.c_str(), AfxGetApp()->m_pszProfileName) ;
|
||||
WritePrivateProfileStringUtf8( "Licence", "Customer", sCust.c_str(), AfxGetApp()->m_pszProfileName) ;
|
||||
// recupero l'identificativo macchina (tipo 2)
|
||||
GetDlgItem( IDC_MACHID)->GetWindowTextW( wszTemp) ;
|
||||
string sMachId = wstrztoA( wszTemp) ;
|
||||
@@ -250,7 +311,7 @@ CKeyGeneratorDlg::OnGenerate( void)
|
||||
AfxMessageBox( L"Id Macchina vuoto o errato") ;
|
||||
return ;
|
||||
}
|
||||
WritePrivateProfileStringUtf8( "Data", "MachineId", sMachId.c_str(), AfxGetApp()->m_pszProfileName) ;
|
||||
WritePrivateProfileStringUtf8( "Licence", "MachineId", sMachId.c_str(), AfxGetApp()->m_pszProfileName) ;
|
||||
// recupero il prodotto
|
||||
GetDlgItem( IDC_PROD)->GetWindowTextW( wszTemp) ;
|
||||
string sProd = wstrztoA( wszTemp) ;
|
||||
@@ -258,9 +319,7 @@ CKeyGeneratorDlg::OnGenerate( void)
|
||||
AfxMessageBox( L"Prodotto vuoto o errato") ;
|
||||
return ;
|
||||
}
|
||||
int nSelProd = ((CComboBox*)GetDlgItem( IDC_PROD))->GetCurSel() ;
|
||||
nSelProd = max( nSelProd, 0) ;
|
||||
WritePrivateProfileInt( "Data", "SelProduct", nSelProd, AfxGetApp()->m_pszProfileName) ;
|
||||
WritePrivateProfileStringUtf8( "Licence", "Product", sProd.c_str(), AfxGetApp()->m_pszProfileName) ;
|
||||
// recupero la versione
|
||||
GetDlgItem( IDC_VER)->GetWindowTextW( wszTemp) ;
|
||||
string sVer = wstrztoA( wszTemp) ;
|
||||
@@ -268,9 +327,7 @@ CKeyGeneratorDlg::OnGenerate( void)
|
||||
AfxMessageBox( L"Versione vuota o errata") ;
|
||||
return ;
|
||||
}
|
||||
int nSelVer = ((CComboBox*)GetDlgItem( IDC_VER))->GetCurSel() ;
|
||||
nSelVer = max( nSelVer, 0) ;
|
||||
WritePrivateProfileInt( "Data", "SelVer", nSelVer, AfxGetApp()->m_pszProfileName) ;
|
||||
WritePrivateProfileStringUtf8( "Licence", "Ver", sVer.c_str(), AfxGetApp()->m_pszProfileName) ;
|
||||
// recupero il livello
|
||||
GetDlgItem( IDC_LEV)->GetWindowTextW( wszTemp) ;
|
||||
string sLev = wstrztoA( wszTemp) ;
|
||||
@@ -278,9 +335,7 @@ CKeyGeneratorDlg::OnGenerate( void)
|
||||
AfxMessageBox( L"Livello vuoto o errato") ;
|
||||
return ;
|
||||
}
|
||||
int nSelLev = ((CComboBox*)GetDlgItem( IDC_LEV))->GetCurSel() ;
|
||||
nSelLev = max( nSelLev, 0) ;
|
||||
WritePrivateProfileInt( "Data", "SelLev", nSelLev, AfxGetApp()->m_pszProfileName) ;
|
||||
WritePrivateProfileStringUtf8( "Licence", "Lev", sLev.c_str(), AfxGetApp()->m_pszProfileName) ;
|
||||
// recupero la data di scadenza
|
||||
int nDays ;
|
||||
CTime tTime ;
|
||||
@@ -292,7 +347,7 @@ CKeyGeneratorDlg::OnGenerate( void)
|
||||
AfxMessageBox( L"Inserisci una Data valida") ;
|
||||
return ;
|
||||
}
|
||||
WritePrivateProfileInt( "Data", "ExpTime", int( tTime.GetTime()), AfxGetApp()->m_pszProfileName) ;
|
||||
WritePrivateProfileInt( "Licence", "ExpDays", nDays, AfxGetApp()->m_pszProfileName) ;
|
||||
// recupero le opzioni
|
||||
unsigned int nOpt1 = 0 ;
|
||||
for ( int i = IDC_CHECK01, j = 0 ; i <= IDC_CHECK16 ; ++ i, ++ j) {
|
||||
@@ -304,6 +359,8 @@ CKeyGeneratorDlg::OnGenerate( void)
|
||||
AfxMessageBox( L"Inserisci Opzioni valide") ;
|
||||
return ;
|
||||
}
|
||||
WritePrivateProfileInt( "Licence", "Opt1", nOpt1, AfxGetApp()->m_pszProfileName) ;
|
||||
WritePrivateProfileInt( "Licence", "Opt2", nOpt2, AfxGetApp()->m_pszProfileName) ;
|
||||
// recupero la data di scadenza delle opzioni
|
||||
int nOptDays ;
|
||||
CTime tOptTime ;
|
||||
@@ -315,6 +372,11 @@ CKeyGeneratorDlg::OnGenerate( void)
|
||||
AfxMessageBox( L"Inserisci una Data valida per le opzioni") ;
|
||||
return ;
|
||||
}
|
||||
WritePrivateProfileInt( "Licence", "OptExpDays", nOptDays, AfxGetApp()->m_pszProfileName) ;
|
||||
// verifico la protezione
|
||||
string sPKey = GetPrivateProfileStringUtf8( "General", "Key", "", AfxGetApp()->m_pszProfileName) ;
|
||||
if ( VerifyKey( sPKey, 1230, 16, 10) != KEY_OK)
|
||||
return ;
|
||||
// calcolo la chiave
|
||||
if ( ! mKey.CalcKey()) {
|
||||
AfxMessageBox( L"Errore nel calcolo della chiave") ;
|
||||
|
||||
+7
-2
@@ -19,11 +19,12 @@
|
||||
class CKeyGeneratorDlg : public CDialogEx
|
||||
{
|
||||
public :
|
||||
CKeyGeneratorDlg( CWnd* pParent = NULL) ;
|
||||
CKeyGeneratorDlg( const std::string& sFileToOpen, CWnd* pParent = NULL) ;
|
||||
|
||||
protected:
|
||||
virtual void OnCancel( void) ;
|
||||
afx_msg void OnClose( void) ;
|
||||
afx_msg void OnOpenFile( void) ;
|
||||
afx_msg void OnGenerate( void) ;
|
||||
|
||||
protected :
|
||||
@@ -32,8 +33,12 @@ class CKeyGeneratorDlg : public CDialogEx
|
||||
afx_msg void OnPaint( void) ;
|
||||
afx_msg HCURSOR OnQueryDragIcon( void) ;
|
||||
|
||||
protected :
|
||||
private :
|
||||
bool LoadFile( const char* szFile) ;
|
||||
|
||||
private :
|
||||
HICON m_hIcon ;
|
||||
std::string m_sFileToOpen ;
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
} ;
|
||||
|
||||
+93
-19
@@ -164,28 +164,102 @@ KeyMaker::GetKey( string& sKey)
|
||||
bool
|
||||
KeyMaker::SaveData( void)
|
||||
{
|
||||
// determino path file di salvataggio
|
||||
// direttorio di salvataggio
|
||||
string sDataDir = GetPrivateProfileStringUtf8( "General", "DataDir", "C:/EgtProg/KeyGenerator", AfxGetApp()->m_pszProfileName) ;
|
||||
TrimRight( sDataDir, "/\\") ;
|
||||
string sFile = sDataDir + "/" + m_sCustomer + ".Kge" ;
|
||||
// apro il file
|
||||
ofstream ofOut( stringtoW( sFile), ios_base::out | ios_base::app) ;
|
||||
|
||||
// path file di log
|
||||
string sLogFile = sDataDir + "\\" + m_sCustomer + ".Kge" ;
|
||||
// leggo indice ultimo salvataggio
|
||||
int nLast = GetPrivateProfileInt( "Index", "Last", 0, sLogFile.c_str()) ;
|
||||
// assegno nome sezione
|
||||
string sSec = "Licence" + ToString( nLast) ;
|
||||
// se cambiati i dati, aggiungo nuova versione di licenza
|
||||
if ( DiffLicence( sLogFile.c_str())) {
|
||||
// salvo nuovo indice salvataggio
|
||||
++ nLast ;
|
||||
WritePrivateProfileInt( "Index", "Last", nLast, sLogFile.c_str()) ;
|
||||
// aggiorno nome sezione
|
||||
sSec = "Licence" + ToString( nLast) ;
|
||||
// salvo i nuovi dati
|
||||
if ( ! WriteLicence( sSec.c_str(), sLogFile.c_str(), true))
|
||||
return false ;
|
||||
}
|
||||
|
||||
// path file licenza
|
||||
string sLicFile = sDataDir + "\\" + m_sCustomer + "_" + sSec + ".lic" ;
|
||||
// linea per evitare problemi con BOM
|
||||
ofstream ofOut( stringtoW( sLicFile), ios_base::out | ios_base::trunc) ;
|
||||
if ( ! ofOut.good())
|
||||
return false ;
|
||||
// inserisco la data
|
||||
ofOut << CurrDateTime() << endl ;
|
||||
ofOut << "Customer=" << m_sCustomer << endl ;
|
||||
ofOut << "MachineId=" << m_sMachineId2 << endl ;
|
||||
ofOut << "ClearMachineId=" << m_sMachineId << endl ;
|
||||
ofOut << "Product=" << m_nProd << endl ;
|
||||
ofOut << "Ver=" << m_nVer << endl ;
|
||||
ofOut << "Lev=" << m_nLev << endl ;
|
||||
ofOut << "ExpDays=" << m_nExpDays << endl ;
|
||||
ofOut << "Opt1=" << m_nOpt1 << endl ;
|
||||
ofOut << "Opt2=" << m_nOpt2 << endl ;
|
||||
ofOut << "OptExpDays=" << m_nOptExpDays << endl ;
|
||||
ofOut << "Key=" << m_sKey << endl ;
|
||||
// chiudo il file
|
||||
ofOut << "; Commento per evitare BOM con UTF-8" << endl ;
|
||||
ofOut.close() ;
|
||||
return true ;
|
||||
// salvo i nuovi dati
|
||||
return WriteLicence( "Licence", sLicFile.c_str(), false) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
KeyMaker::DiffLicence( const char* szFile)
|
||||
{
|
||||
// leggo indice ultimo salvataggio
|
||||
int nLast = GetPrivateProfileInt( "Index", "Last", 0, szFile) ;
|
||||
// sezione ultimo salvataggio
|
||||
string sSec = "Licence" + ToString( nLast) ;
|
||||
// leggo i dati dell'ultimo salvataggio e li confronto con gli attuali
|
||||
string sCust = GetPrivateProfileStringUtf8( sSec.c_str(), "Customer", "", szFile) ;
|
||||
if ( sCust != m_sCustomer)
|
||||
return true ;
|
||||
string sMachId = GetPrivateProfileStringUtf8( sSec.c_str(), "MachineId", "", szFile) ;
|
||||
if ( sMachId != m_sMachineId2)
|
||||
return true ;
|
||||
string sClearMachId = GetPrivateProfileStringUtf8( sSec.c_str(), "ClearMachineId", "", szFile) ;
|
||||
if ( sClearMachId != m_sMachineId)
|
||||
return true ;
|
||||
int nProd = GetPrivateProfileInt( sSec.c_str(), "Product", 0, szFile) ;
|
||||
if ( nProd != m_nProd)
|
||||
return true ;
|
||||
int nVer = GetPrivateProfileInt( sSec.c_str(), "Ver", 0, szFile) ;
|
||||
if ( nVer != m_nVer)
|
||||
return true ;
|
||||
int nLev = GetPrivateProfileInt( sSec.c_str(), "Lev", 0, szFile) ;
|
||||
if ( nLev != m_nLev)
|
||||
return true ;
|
||||
int nExpDays = GetPrivateProfileInt( sSec.c_str(), "ExpDays", 0, szFile) ;
|
||||
if ( nExpDays != m_nExpDays)
|
||||
return true ;
|
||||
int nOpt1 = GetPrivateProfileInt( sSec.c_str(), "Opt1", 0, szFile) ;
|
||||
if ( nOpt1 != m_nOpt1)
|
||||
return true ;
|
||||
int nOpt2 = GetPrivateProfileInt( sSec.c_str(), "Opt2", 0, szFile) ;
|
||||
if ( nOpt2 != m_nOpt2)
|
||||
return true ;
|
||||
int nOptExpDays = GetPrivateProfileInt( sSec.c_str(), "OptExpDays", 0, szFile) ;
|
||||
if ( nOptExpDays != m_nOptExpDays)
|
||||
return true ;
|
||||
string sKey = GetPrivateProfileStringUtf8( sSec.c_str(), "Key", "", szFile) ;
|
||||
if ( sKey != m_sKey)
|
||||
return true ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
KeyMaker::WriteLicence( const char* szSec, const char* szFile, bool bAll)
|
||||
{
|
||||
if ( bAll)
|
||||
WritePrivateProfileStringUtf8( szSec, "Date", CurrDateTime().c_str(), szFile) ;
|
||||
WritePrivateProfileStringUtf8( szSec, "Customer", m_sCustomer.c_str(), szFile) ;
|
||||
WritePrivateProfileStringUtf8( szSec, "MachineId", m_sMachineId2.c_str(), szFile) ;
|
||||
if ( bAll)
|
||||
WritePrivateProfileStringUtf8( szSec, "ClearMachineId", m_sMachineId.c_str(), szFile) ;
|
||||
WritePrivateProfileInt( szSec, "Product", m_nProd, szFile) ;
|
||||
WritePrivateProfileInt( szSec, "Ver", m_nVer, szFile) ;
|
||||
WritePrivateProfileInt( szSec, "Lev", m_nLev, szFile) ;
|
||||
WritePrivateProfileInt( szSec, "ExpDays", m_nExpDays, szFile) ;
|
||||
WritePrivateProfileInt( szSec, "Opt1", m_nOpt1, szFile) ;
|
||||
WritePrivateProfileInt( szSec, "Opt2", m_nOpt2, szFile) ;
|
||||
WritePrivateProfileInt( szSec, "OptExpDays", m_nOptExpDays, szFile) ;
|
||||
WritePrivateProfileStringUtf8( szSec, "Key", m_sKey.c_str(), szFile) ;
|
||||
return true ;
|
||||
}
|
||||
@@ -33,6 +33,10 @@ class KeyMaker
|
||||
bool GetKey( std::string& sKey) ;
|
||||
bool SaveData( void) ;
|
||||
|
||||
private :
|
||||
bool DiffLicence( const char* szFile) ;
|
||||
bool WriteLicence( const char* szSec, const char* szFile, bool bAll) ;
|
||||
|
||||
private :
|
||||
std::string m_sCustomer ;
|
||||
std::string m_sMachineId ;
|
||||
|
||||
BIN
Binary file not shown.
Reference in New Issue
Block a user