Good day. I am writing code to view the registry. Found on the Internet such code:

CRegKey key; LONG status = key.Open(HKEY_LOCAL_MACHINE, "Config\\0001\\Display\\Settings"); if (status == ERROR_SUCCESS) { char setting[255]; DWORD settingSize = sizeof(setting); status = key.QueryValue(setting, "Resolution", &settingSize); if (status == ERROR_SUCCESS) { <---Ошибки Ρ‚ΡƒΡ‚---> CString s(setting); m_Edit = s; UpdateData(FALSE); key.Close(); <---Ошибки Ρ‚ΡƒΡ‚---> 

But everyone's favorite Visual Studio gives errors.

 Ошибка C2065 CString: Π½Π΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\main.cpp 28 Ошибка C2146 синтаксичСская ошибка: отсутствиС ";" ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ "s" Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\main.cpp 28 Ошибка C3861 s: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\main.cpp 28 Ошибка (Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ) ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ "CString" Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Win32Project3 c:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\main.cpp 28 Ошибка C2065 m_Edit: Π½Π΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\main.cpp 29 Ошибка C2065 s: Π½Π΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\main.cpp 29 Ошибка (Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ) ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ "m_Edit" Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Win32Project3 c:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\main.cpp 29 Ошибка C3861 UpdateData: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\main.cpp 30 Ошибка (Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ) ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ "UpdateData" Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Win32Project3 c:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\main.cpp 30 Ошибка C2664 "LSTATUS RegCreateKeyExA(HKEY,LPCSTR,DWORD,LPSTR,DWORD,REGSAM,const LPSECURITY_ATTRIBUTES,PHKEY,LPDWORD)": Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ 2 ΠΈΠ· "PCWSTR" Π² "LPCSTR" Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\Reg.cpp 55 Ошибка C2664 "int lstrlenA(LPCSTR)": Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ 1 ΠΈΠ· "PCWSTR" Π² "LPCSTR" Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\Reg.cpp 62 Ошибка C2664 "LSTATUS RegSetValueExA(HKEY,LPCSTR,DWORD,DWORD,const BYTE *,DWORD)": Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ 2 ΠΈΠ· "PCWSTR" Π² "LPCSTR" Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\Reg.cpp 64 Ошибка C2664 "LSTATUS RegOpenKeyExA(HKEY,LPCSTR,DWORD,REGSAM,PHKEY)": Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ 2 ΠΈΠ· "PCWSTR" Π² "LPCSTR" Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\Reg.cpp 102 Ошибка C2664 "LSTATUS RegQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD)": Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ 2 ΠΈΠ· "PCWSTR" Π² "LPCSTR" Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\Reg.cpp 108 Ошибка C2664 "HRESULT StringCchPrintfA(STRSAFE_LPSTR,size_t,STRSAFE_LPCSTR,...)": Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ 1 ΠΈΠ· "wchar_t [260]" Π² "STRSAFE_LPSTR" Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\Reg.cpp 162 Ошибка C2664 "HRESULT StringCchPrintfA(STRSAFE_LPSTR,size_t,STRSAFE_LPCSTR,...)": Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ 1 ΠΈΠ· "wchar_t [260]" Π² "STRSAFE_LPSTR" Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\Reg.cpp 171 Ошибка C2664 "HRESULT StringCchPrintfA(STRSAFE_LPSTR,size_t,STRSAFE_LPCSTR,...)": Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ 1 ΠΈΠ· "wchar_t [260]" Π² "STRSAFE_LPSTR" Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\Reg.cpp 211 Ошибка C2664 "LSTATUS RegDeleteTreeA(HKEY,LPCSTR)": Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ 2 ΠΈΠ· "wchar_t [260]" Π² "LPCSTR" Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\Reg.cpp 214 Ошибка C2664 "HRESULT StringCchPrintfA(STRSAFE_LPSTR,size_t,STRSAFE_LPCSTR,...)": Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ 1 ΠΈΠ· "wchar_t [260]" Π² "STRSAFE_LPSTR" Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\Reg.cpp 279 Ошибка C2664 "HRESULT StringCchPrintfA(STRSAFE_LPSTR,size_t,STRSAFE_LPCSTR,...)": Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ 1 ΠΈΠ· "wchar_t [260]" Π² "STRSAFE_LPSTR" Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\Reg.cpp 334 Ошибка C2664 "LSTATUS RegDeleteTreeA(HKEY,LPCSTR)": Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ 2 ΠΈΠ· "wchar_t [260]" Π² "LPCSTR" Win32Project3 C:\Users\user\Documents\Visual Studio 2015\Projects\Win32Project3\Win32Project3\Reg.cpp 337 

I would be very grateful if you help.

  • If the compiler shows many, many errors, it usually makes sense to watch only the very first one. The rest are usually just a consequence of it. In your case, swears that he does not know what CString is. And this is a class, part of MFC, that is, you need to create a project with its support. - KoVadim
  • And do not tell me how you can read the values ​​from the registry for simple. There are many codes on the Internet, but they are all very complex ( - ThiefHarlem
  • I'm afraid my example will be just as "complicated" - working with the registry, although it looks simple, is not so trivial. Yes, s / s ++ is not so simple either. (although there are other opinions). But if done on a pure winapi, then it will not be quite difficult. - KoVadim
  • It is possible on WinApi. The main thing that was with the comments. If you can help, I will be grateful. - ThiefHarlem

1 answer 1

 HKEY app_key; LPVOID ptDest = NULL; // ΠΊΡƒΠ΄Π° Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ LPΠ‘TSTR ptName = "param"; // имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\my_app", 0, KEY_QUERY_VALUE, &app_key) == ERROR_SUCCESS) // ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π» { DWORD dwSize = 0; RegQueryValueEx(app_key, ptName, 0, NULL, NULL, &dwSize); // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° *ptDest = (PTCHAR)malloc(dwSize); // выдСляСм ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Π½Π΅Π³ΠΎ RegQueryValueEx(hKey, ptName, 0, NULL, (PBYTE)*ptDest, &dwSize); // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° RegCloseKey(app_key); // Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π» } 

Without special checks. You should go to MSDN, everything is detailed there. In general, judging by your approach, you need something like a python or a pearl, not crosses.