EgtLock 1.5i2 :
- primo rilascio.
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2014-2014
|
||||
//----------------------------------------------------------------------------
|
||||
// File : RegForMachineId.cpp Data : 08.09.14 Versione : 1.5i2
|
||||
// Contenuto : Funzioni per salvataggio e lettura MachineId da Registry.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 08.09.14 DS Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//------------------ Include -------------------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include <windows.h>
|
||||
#include "RegForMachineId.h"
|
||||
#include "/EgtDev/Include/EGnStringConverter.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
#define RKEY_EGT_POS L"Software\\EgalTech\\Position"
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
LONG CreateAndSetKey( HKEY hKey, const wchar_t* wszSubKey, const wchar_t* wszValName, const wchar_t* wszVal) ;
|
||||
LONG GetKey( HKEY hKey, const wchar_t* wszSubKey, const wchar_t* wszValName, wchar_t* wszVal, DWORD* pdwLen) ;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
bool
|
||||
SaveMachineIdOnReg( const string& sMachineId)
|
||||
{
|
||||
return ( CreateAndSetKey( HKEY_CURRENT_USER, RKEY_EGT_POS, L"", stringtoW( sMachineId)) == ERROR_SUCCESS) ;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
bool
|
||||
LoadMachineIdFromReg( string& sMachineId)
|
||||
{
|
||||
const int LEN_BUF = 50 ;
|
||||
wcharBuffer wBuffer( LEN_BUF) ;
|
||||
DWORD dwLen = LEN_BUF ;
|
||||
if ( GetKey( HKEY_CURRENT_USER, RKEY_EGT_POS, L"", wBuffer.data(), &dwLen) == ERROR_SUCCESS) {
|
||||
wBuffer.terminate( dwLen) ;
|
||||
sMachineId = wcharBtoA( wBuffer) ;
|
||||
return true ;
|
||||
}
|
||||
else {
|
||||
sMachineId.clear() ;
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
LONG
|
||||
CreateAndSetKey( HKEY hKey, const wchar_t* wszSubKey, const wchar_t* wszValName, const wchar_t* wszVal)
|
||||
{
|
||||
// creazione della chiave
|
||||
HKEY hSubKey ;
|
||||
LONG lResult = ::RegCreateKeyExW( hKey, wszSubKey, 0, NULL, REG_OPTION_NON_VOLATILE,
|
||||
KEY_WRITE | KEY_READ, NULL,
|
||||
&hSubKey, NULL) ;
|
||||
if ( lResult != ERROR_SUCCESS)
|
||||
return lResult ;
|
||||
|
||||
// assegnazione del valore
|
||||
lResult = ::RegSetValueExW( hSubKey, wszValName, 0, REG_SZ, (LPBYTE) wszVal, (DWORD) 2 * lstrlen( wszVal) + 2) ;
|
||||
|
||||
// rilascio l'handle alla chiave
|
||||
::RegCloseKey( hSubKey) ;
|
||||
|
||||
return lResult ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
LONG
|
||||
GetKey( HKEY hKey, const wchar_t* wszSubKey, const wchar_t* wszValName, wchar_t* wszVal, DWORD* pdwLen)
|
||||
{
|
||||
// apro la chiave
|
||||
HKEY hSubKey ;
|
||||
LONG lResult = ::RegOpenKeyExW( hKey, wszSubKey, 0, KEY_READ, &hSubKey) ;
|
||||
if ( lResult != ERROR_SUCCESS)
|
||||
return lResult ;
|
||||
|
||||
// leggo il valore
|
||||
*pdwLen *= 2 ;
|
||||
lResult = ::RegQueryValueExW( hSubKey, wszValName, NULL, NULL, (LPBYTE) wszVal, pdwLen) ;
|
||||
*pdwLen /= 2 ;
|
||||
|
||||
// rilascio l'handle alla chiave
|
||||
::RegCloseKey( hSubKey) ;
|
||||
|
||||
return lResult ;
|
||||
}
|
||||
Reference in New Issue
Block a user