Bonjour,

Je n'arrive pas à récupérer une string dans la base de registre pourtant j'arrive bien à l'écrire dans cette dernière.Tout ce passe bien pour l'écriture(je vérifie bien au niveau de l'éditeur de la base de registre que la string est bien stockée) par contre pour la lecture, le AfxMessageBox (Region not recovered) est affiché.

Voici les portions de code pour l'écriture et la lecture:

Ecriture:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
 
HKEY	hRegKey;
WCHAR	wcKeyName[_MAX_PATH];
DWORD	dwDisp;
DWORD	dwRegVal;  	
LPCTSTR	pcszRegion;
 
wcscpy(wcKeyName,TN_GPS_INIT_REGISTRY_PATH);
 
// Open the registry record, if exists
if ( RegOpenKeyEx( HKEY_LOCAL_MACHINE, wcKeyName, 0, 0, &hRegKey ) != ERROR_SUCCESS )
{    
       // Registry entry not found, so create a new one.
      // Create Registry record
      if ( RegCreateKeyEx(HKEY_LOCAL_MACHINE, wcKeyName, 0, NULL, 0, 0, NULL, &hRegKey, &dwDisp ) != ERROR_SUCCESS )
      {
             // Error, could not open or create registry key
	;
             return 0;
       }
}
 
// Now create the subkeys
 
//Region
pcszRegion = m_region;
if (RegSetValueEx(hRegKey,_T("Region"), NULL, REG_SZ, (PBYTE)pcszRegion, (_tcslen(pcszRegion) + 1) * sizeof(TCHAR)) != ERROR_SUCCESS)
{
         ; // could not save key
         AfxMessageBox(_T("Region Not Written"));
}
Pour la lecture:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
 
HKEY	hRegKey;
WCHAR	wcKeyName[_MAX_PATH];
DWORD	dwCount,dwType;
BOOL	bRegAvail = TRUE;
 
DWORD    dwDataSize = 0;
CString strValue; 
 
// Temp vars to hold values read from registry. Set them to default values first.
DWORD	dwRegVal;
 
// if the registry entry and data are already there, read them in
// else, create one with default data
wcscpy(wcKeyName,TN_GPS_INIT_REGISTRY_PATH);
 
if ( RegOpenKeyEx(HKEY_LOCAL_MACHINE, wcKeyName, 0, 0, &hRegKey) == ERROR_SUCCESS)
{
 
               // Get string region
                dwCount = sizeof(DWORD);
                dwType = REG_SZ;
                if ( RegQueryValueEx( hRegKey, _T("Region"), NULL, &dwType,  (PBYTE)(LPTSTR)strValue.GetBuffer(dwDataSize + 1), &dwDataSize ) == ERROR_SUCCESS) 
	               {
	                           strValue.ReleaseBuffer(); 
		           m_region = (CString)strValue;
	                }
	                else
	                {
		          AfxMessageBox(_T("Region not recovered"));
		          strValue.ReleaseBuffer(); 
	                }
}

Est ce que quelqu'un peut m'aider