CRegKey/SetValue 바꾸자

hwaya
|

디자인변환 프로그램을 만들일이 있어서 오랜만에 C++를 만지작 만지작 하던 중,

레지스트리에 저장된 값을 불러오고, 저장할 일이 생겼다.

그래서 생각없이,

예전에 많이 사용하던 그때 그 코드로 사용했다.

저장할때, SetValue를...

	CRegKey RegKey;
	RegKey.Create(HKEY_CURRENT_USER, "블라블라");
	RegKey.SetValue(nConversionEnabled, "이거블라블라");
	RegKey.Close();

그리고 빌드.

빌드.

빌드...

으움?

왜!!!!!!!! C4996이 뜨냐고!!!!!

img.png

그랬다.

또, 무언인가 고전틱한 고전고전의 느낌이라 취약점이 있겠지.

오버플로우가 생길수 있을려나...

바로 검색!

뚜뚱!

해당함수는

QueryValueEx , SetvalueEx 로 대체되었다고한다.

빠르게 바꿔야지!

https://docs.microsoft.com/ko-kr/windows/win32/api/winreg/nf-winreg-regqueryvalueexa

LSTATUS RegQueryValueExA(
  HKEY    hKey,
  LPCSTR  lpValueName,
  LPDWORD lpReserved,
  LPDWORD lpType,
  LPBYTE  lpData,
  LPDWORD lpcbData
);

https://docs.microsoft.com/ko-kr/windows/win32/api/winreg/nf-winreg-regsetvalueexa

LSTATUS RegSetValueExA(
  HKEY       hKey,
  LPCSTR     lpValueName,
  DWORD      Reserved,
  DWORD      dwType,
  const BYTE *lpData,
  DWORD      cbData
);

맺음말

그냥 C#이 편하다.! 어쩔수 없었다.... 코드를 다 이식하기에는