5128eecc9f 2011-02-23 kinaba: //--- K.I.LIB --- 5128eecc9f 2011-02-23 kinaba: // kl_reg.h : registry and ini-file operation 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: #include "stdafx.h" 5128eecc9f 2011-02-23 kinaba: #include "kilib.h" 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: //---------------------------- openŚn ----------------------------// 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool kiRegKey::open( HKEY parent, LPCTSTR keyname, REGSAM access ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: return (ERROR_SUCCESS == RegOpenKeyEx( parent, 5128eecc9f 2011-02-23 kinaba: keyname, 0, access, &m_hKey )); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool kiRegKey::create( HKEY parent, LPCTSTR keyname, REGSAM access ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: DWORD x; 5128eecc9f 2011-02-23 kinaba: return (ERROR_SUCCESS == RegCreateKeyEx( parent, 5128eecc9f 2011-02-23 kinaba: keyname, 0, REG_NONE, REG_OPTION_NON_VOLATILE, access, NULL, &m_hKey, &x )); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: //------------------------- query/setŚn ----------------------------// 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool kiRegKey::get( LPCTSTR valname, DWORD* val ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: DWORD x=4; 5128eecc9f 2011-02-23 kinaba: return (ERROR_SUCCESS == RegQueryValueEx( m_hKey, 5128eecc9f 2011-02-23 kinaba: valname, NULL, NULL, (BYTE*)val, &x )); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool kiRegKey::get( LPCTSTR valname, BYTE* val, DWORD siz ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: return (ERROR_SUCCESS == RegQueryValueEx( m_hKey, 5128eecc9f 2011-02-23 kinaba: valname, NULL, NULL, val, &siz )); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool kiRegKey::get( LPCTSTR valname, kiStr* val ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: static char dat[2048]; 5128eecc9f 2011-02-23 kinaba: DWORD x = 2048; 5128eecc9f 2011-02-23 kinaba: if( ERROR_SUCCESS == RegQueryValueEx( m_hKey, 5128eecc9f 2011-02-23 kinaba: valname, NULL, NULL, (BYTE*)dat, &x )) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: *val = dat; 5128eecc9f 2011-02-23 kinaba: return true; 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: return false; 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool kiRegKey::set( LPCTSTR valname, DWORD val ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: return (ERROR_SUCCESS == RegSetValueEx( m_hKey, 5128eecc9f 2011-02-23 kinaba: valname, 0, REG_DWORD, (BYTE*)&val, 4 )); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool kiRegKey::set( LPCTSTR valname, BYTE* val, DWORD siz ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: return (ERROR_SUCCESS == RegSetValueEx( m_hKey, 5128eecc9f 2011-02-23 kinaba: valname, 0, REG_BINARY, (BYTE*)val, siz )); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool kiRegKey::set( LPCTSTR valname, LPCTSTR val ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: return (ERROR_SUCCESS == RegSetValueEx( m_hKey, 5128eecc9f 2011-02-23 kinaba: valname, 0, REG_SZ, (BYTE*)val, ki_strlen(val)+1 )); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: //--------------------------- deleteŚn ----------------------------// 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool kiRegKey::del( LPCTSTR valname ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: return (ERROR_SUCCESS == RegDeleteValue( m_hKey, valname )); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool kiRegKey::delSubKey( LPCTSTR keyname ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: if( app()->osver().dwPlatformId == VER_PLATFORM_WIN32_NT ) 5128eecc9f 2011-02-23 kinaba: return delSubKeyRecursive( m_hKey, keyname ); 5128eecc9f 2011-02-23 kinaba: else 5128eecc9f 2011-02-23 kinaba: return (ERROR_SUCCESS == RegDeleteKey( m_hKey, keyname )); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool kiRegKey::delSubKeyRecursive( HKEY k, LPCTSTR n ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: HKEY k2; 5128eecc9f 2011-02-23 kinaba: if( ERROR_SUCCESS!=RegOpenKeyEx( k,n,0,KEY_READ,&k2 ) ) 5128eecc9f 2011-02-23 kinaba: return false; 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool ans = true; 5128eecc9f 2011-02-23 kinaba: static char buf[2048]; 5128eecc9f 2011-02-23 kinaba: DWORD bs = sizeof(buf); 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: for( int i=0; 5128eecc9f 2011-02-23 kinaba: ERROR_SUCCESS==RegEnumKeyEx( k2,i,buf,&bs,NULL,NULL,NULL,NULL ); 5128eecc9f 2011-02-23 kinaba: i++ ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: if( !delSubKeyRecursive( k2,buf ) ) 5128eecc9f 2011-02-23 kinaba: ans = false; 5128eecc9f 2011-02-23 kinaba: bs = sizeof(buf); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: RegCloseKey( k2 ); 5128eecc9f 2011-02-23 kinaba: RegDeleteKey( k,n ); 5128eecc9f 2011-02-23 kinaba: return ans; 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: //--------------------------- ini:ʉŠú‰» ----------------------------// 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: void kiIniFile::setFileName( const char* ini, bool exepath ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: if( !exepath ) 5128eecc9f 2011-02-23 kinaba: m_FileName = ""; 5128eecc9f 2011-02-23 kinaba: else 5128eecc9f 2011-02-23 kinaba: { 36ad977839 2017-05-30 kinaba: m_FileName.beSpecialPath( kiPath::Exe ); 5128eecc9f 2011-02-23 kinaba: m_FileName.beBackSlash( true ); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: m_FileName += ini; 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: //--------------------------- ini:readŚn ----------------------------// 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: int kiIniFile::getInt( const char* key, int defval ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: return ::GetPrivateProfileInt( m_CurSec, key, defval, m_FileName ); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool kiIniFile::getBool( const char* key, bool defval ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: return (0 != ::GetPrivateProfileInt( m_CurSec, 5128eecc9f 2011-02-23 kinaba: key, defval?1:0, m_FileName ) ); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: const char* kiIniFile::getStr( const char* key, const char* defval ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: ::GetPrivateProfileString( m_CurSec, key, defval, 5128eecc9f 2011-02-23 kinaba: m_StrBuf, sizeof(m_StrBuf), m_FileName ); 5128eecc9f 2011-02-23 kinaba: return m_StrBuf; 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: //--------------------------- ini:writeŚn ----------------------------// 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool kiIniFile::putStr( const char* key, const char* val ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: return (FALSE != ::WritePrivateProfileString( 5128eecc9f 2011-02-23 kinaba: m_CurSec, key, val, m_FileName ) ); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool kiIniFile::putInt( const char* key, int val ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: ::wsprintf( m_StrBuf, "%d", val ); 5128eecc9f 2011-02-23 kinaba: return putStr( key, m_StrBuf ); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: bool kiIniFile::putBool( const char* key, bool val ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: return putStr( key, val ? "1" : "0" ); 5128eecc9f 2011-02-23 kinaba: }