SW 개발

[win32API] 레지스트리 값 읽기 / 쓰기 / 삭제

. . . 2013. 3. 27. 08:37
반응형

레지스트리 컨트롤하는 예제..

백번 설명보다는 그냥 깔끔하고 쉬운예제가 머리에 쏙쏙 들어온다.

레지스트리 읽기

// 레지스트리 읽기 //
LONG lResult;
    HKEY hKey;
    DWORD dwType;
    DWORD dwBytes=100;
    char buffer[100];

    // open Regstry Key
    lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                           "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 
                           0, KEY_ALL_ACCESS, &hKey);
    if(lResult != ERROR_SUCCESS)
    {
  AfxMessageBox("Register Open Error");
    } 

    // Read Regstry Key
    lResult=RegQueryValueEx(hKey, "abc", 0, &dwType, (LPBYTE)buffer, &dwBytes); 
    if(lResult == ERROR_SUCCESS)
  AfxMessageBox(buffer);
 else   
  AfxMessageBox("Register Read Error");

 RegCloseKey(hKey);
 ```

## 레지스트리 추가

```cpp
// 레지스트리 추가 //
LONG lResult;
 char buffer[100];
    HKEY hKey;
    DWORD dwDesc;
 char *path = "c:\\winnt\\system32\\notepad.exe";  // 노트 패드 경로

 // 레지스트리 열고
 RegOpenKeyEx(HKEY_LOCAL_MACHINE,
              "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 
              0, KEY_ALL_ACCESS, &hKey);

    // Set Registry Key & Value
 lResult = RegCreateKeyEx(HKEY_LOCAL_MACHINE, 
                          "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
                          0, buffer, 
                          REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, 
                          &hKey, &dwDesc);
    if(lResult == ERROR_SUCCESS) 
 {
        RegSetValueEx(hKey, "abc", 0, REG_SZ, (BYTE*)path, strlen(path));
 }

 //레지스트리 닫고
 RegCloseKey(hKey);

레지스트리 삭제

// 레지스트리 삭제//
 LONG lResult;
    HKEY hKey;
    DWORD dwBytes=100;
 CString str = "abc";

    // open Regstry Key
    lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                           "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 
                           0, KEY_ALL_ACCESS, &hKey);
    if(lResult != ERROR_SUCCESS)
    {
  AfxMessageBox("Register Open Error");
    } 


 lResult = RegDeleteValue(hKey, str);  // 삭제

 if (lResult == ERROR_SUCCESS) 
  AfxMessageBox("레지스터 삭제 성공");
    else 
  AfxMessageBox("실패당...ㅠㅠ");

 RegCloseKey(hKey);

레지스트리 쓰기

CRegKey RegKey;

RegKey.Create(HKEY_LOCAL_MACHINE,"SOFTWARE\\test"); 
RegKey.SetValue("저장할 변수명", "test");
RegKey.Close();
반응형