Computer/C, CPP, MFC

CRegKey/SetValue 바꾸자

hwaya. 2019. 9. 12. 14:58
반응형

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

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

 

그래서 생각없이,

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

저장할때, SetValue를...

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

그리고 빌드.

 

빌드.

 

빌드...

 

으움?

 

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

 

 

그랬다.

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

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

 

바로 검색!

뚜뚱!

 

해당함수는

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

빠르게 바꿔야지!

 

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

 

RegQueryValueExA function (winreg.h)

Retrieves the type and data for the specified value name associated with an open registry key.

docs.microsoft.com

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

 

RegSetValueExA function (winreg.h)

Sets the data and type of a specified value under a registry key.

docs.microsoft.com

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

 


맺음말

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

반응형