## 레지스트리 추가 ## 레지스트리 추가 부분에서는 위에 루트에 abc라는 이름과 "c:\\winnt\\system32\\notepad.exe"의 데이터를 갖는것을 추가함. 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); ## 레지스트리 읽기 ## 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); ## 서브 키까지 삭제 # void SimpleApp::DeleteRegKey() { HKEY m_hKey = NULL; char svSubKeyBuf[MAX_PATH+1]; long m_RetValue = ::RegOpenKeyEx (HKEY_CURRENT_USER,"Software\\Test",0,KEY_ALL_ACCESS,&m_hKey); if(m_RetValue == ERROR_SUCCESS) // 오픈 성공하면... { RegDeleteKeyRecurse(HKEY_CURRENT_USER, _T("Software\\Test"), svSubKeyBuf); } return; } int SimpleApp::RegDeleteKeyRecurse(HKEY hKey, LPCTSTR lpSubKey, char *svKeyBuf) { int nCount=0; char svSubKeyBuf[MAX_PATH+1]; HKEY hSubKey; if(RegOpenKeyEx(hKey,lpSubKey,0,KEY_ALL_ACCESS,&hSubKey)!=ERROR_SUCCESS) { return -1; } while(RegEnumKey(hSubKey,nCount,svKeyBuf,MAX_PATH)!=ERROR_NO_MORE_ITEMS) { if(RegDeleteKeyRecurse(hSubKey,svKeyBuf,svSubKeyBuf)==-1) { RegCloseKey(hSubKey); return 1; } nCount++; } RegCloseKey(hSubKey); RegDeleteKey(hKey,lpSubKey); return 0; } 정확한 출처를 잘모르겠습니다. 뎃글 또는 이메일로 메세지 남겨주시면 출처 표시하겠습니다. |
'프로그래밍 팁 > etc' 카테고리의 다른 글
일정시간이 지나면 메시지 박스 종료하기 (0) | 2010.12.27 |
---|---|
각 자료형 범위 확인 매크로(int, long, ...) (0) | 2010.12.21 |
윈도우7 XML을 이용한 작업스케줄러 등록 (0) | 2010.11.03 |
전역 HotKey (0) | 2010.11.02 |
시스템 설정 변경(SystemParametersInfo) (0) | 2010.10.15 |