HKEY_LOCAL_MACHINE 접근권한 문제


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
HKEY hkey;
 DWORD dwType = REG_SZ;
 DWORD size = 1024;
 LSTATUS lRet = 0;
 lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T("SOFTWARE\InterBERA"), 0, KEY_ALL_ACCESS  ,&hkey);
 
 if(lRet==ERROR_SUCCESS )
{   
    lRet=RegQueryValueEx(hkey, key, 0,&dwType, (LPBYTE)val, &size );
 
        if(lRet==ERROR_SUCCESS)
        {
            // 어쩌고 저쩌고
        }
 }
 else
 {     
 }
 
 RegCloseKey(hkey);
 return 0;
 


작업하던중 이런 소스가 있다.

레지스트리중 HKEY_LOCAL_MACHINE을 접근해서 읽고 쓰기를 진행하려고한다.

하지만 실행을 해보면 읽기/쓰기가 제대로 안된다.


그래서 구글링해보니 한 실행파일에서 HKEY_LOCAL_MACHINE 접근을 하기위해서는 각종 다양한 제약이 존재했다.


1.실행파일에서 로컬머신 레지스트리로로 접근을 하려면 일단 권한이 필요하다.

-> 비쥬얼 스튜디오에 manifest file 설정을 하던가 아니면 실행파일 우클릭후 관리자 권한으로 실행을 한다.


2.1번을 해도 안된다면 64비트 OS인지 체크를 해보자

-> 64비트 OS는 키도 64비트이기때문에 레지스트리 접근을 할때 옵션을 추가적으로 적어줘야한다. (KEY_WOW64_64KEY를 오픈시 옵션으로 넣어줘야함)

관련 링크 : http://msdn.microsoft.com/en-US/library/aa384129.aspx






2번은 서치해도 겁나 안나와서 삽질을 엄청하다가 MSDN에서 겨우 찾음 ㅠㅠ 하앜... 


이 글을 공유하기

댓글

Designed by JB FACTORY