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:
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 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")); }
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
Partager