1 /* Copyright 2000, International Business Machines Corporation and others.
4 This software has been released under the terms of the IBM Public
5 License. For details, see the LICENSE file in the top-level source
6 directory or online at http://www.openafs.org/dl/license10.html
14 static char THIS_FILE[] = __FILE__;
17 CRegkey::CRegkey(HKEY hKey,const char *subkey,const char *skey)
19 DWORD disposition,result;
21 result=(RegCreateKeyEx(hKey //HKEY_LOCAL_MACHINE
22 ,subkey //"Software\\IBM"
24 ,REG_OPTION_NON_VOLATILE
27 ,&disposition)==ERROR_SUCCESS);
30 AfxMessageBox("AFS Error - Could Not create a registration key!");
33 result=(RegCreateKeyEx(m_kPkey
36 ,REG_OPTION_NON_VOLATILE
38 ,&m_kSkey,&disposition)==ERROR_SUCCESS);
42 AfxMessageBox("AFS Error - Could Not create a registration key!");
48 BOOL CRegkey::Enumerate()
53 char *p=lpName.GetBuffer(dwLen);
54 FILETIME ftLastWriteTime;
55 result=RegEnumKeyEx(m_kSkey,// handle to key to enumerate
56 m_dwIndex++, // subkey index
58 &dwLen, // size of subkey buffer
60 NULL, // class string buffer
61 NULL, // size of class string buffer
62 &ftLastWriteTime // last write time
66 case ERROR_NO_MORE_ITEMS:
71 AfxMessageBox("AFS Error - Could Not enumerate a registration key!");
78 CRegkey::CRegkey(const char *skey)
80 DWORD disposition,result;
82 result=(RegCreateKeyEx(HKEY_CURRENT_USER
85 ,REG_OPTION_NON_VOLATILE
88 ,&disposition)==ERROR_SUCCESS);
91 AfxMessageBox("AFS Error - Could Not create a registration key!");
94 result=(RegCreateKeyEx(m_kPkey
97 ,REG_OPTION_NON_VOLATILE
99 ,&m_kSkey,&disposition)==ERROR_SUCCESS);
102 RegCloseKey(m_kPkey);
103 AfxMessageBox("AFS Error - Could Not create a registration key!");
108 BOOL CRegkey::GetString(const char *field,CString &buffer,DWORD len)
110 if (m_kSkey==0) return FALSE;
111 UCHAR *pBuffer=(UCHAR *)buffer.GetBuffer(len);
113 if (RegQueryValueEx(m_kSkey
116 ,&len)!=ERROR_SUCCESS)
118 buffer.ReleaseBuffer();
119 return FALSE; //assume never been set
121 ASSERT(type==REG_SZ);
122 buffer.ReleaseBuffer(len);
126 BOOL CRegkey::PutString(const char *field,const char *pBuffer)
130 if ((pBuffer)&&(strlen(pBuffer)))
131 return (RegSetValueEx(m_kSkey,field,0,REG_SZ,(CONST BYTE *)pBuffer,strlen(pBuffer))==ERROR_SUCCESS);
132 return (RegSetValueEx(m_kSkey,field,0,REG_SZ,(CONST BYTE *)"",0)==ERROR_SUCCESS);
136 BOOL CRegkey::GetBinary(const char *field,LPBYTE msg,DWORD &len)
141 if (RegQueryValueEx(m_kSkey
144 ,&len)!=ERROR_SUCCESS)
146 return FALSE; //assume never been set
148 ASSERT(type==REG_BINARY);
152 BOOL CRegkey::PutBinary(const char *field,LPBYTE msg,DWORD len)
159 return (RegSetValueEx(m_kSkey,field,0,REG_BINARY,msg,len)==ERROR_SUCCESS);
160 return (RegSetValueEx(m_kSkey,field,0,REG_BINARY,(LPBYTE)&empty,0)==ERROR_SUCCESS);
166 RegCloseKey(m_kSkey);
168 RegCloseKey(m_kPkey);