본문 바로가기

Application Dev./C++/MFC

레지스트리에 등록된 시작프로그램 가져오기

BOOL CLXStartupManagerDlg::GetStartupListIn() 
{ 
        HKEY hKey; 
        long lSubResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, // HKEY_CURRENT_USER 
                        _T("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_READ, &hKey); 

        if(lSubResult != ERROR_SUCCESS) 
        { 
                RegCloseKey(hKey); 
                AfxMessageBox(_T("Key Open Error")); 
                return FALSE; 
        } 

        DWORD dwIndex = 0; 
        int nIndex = 0; 

        CString SubName = _T(""); 
        CString SubValue = _T(""); 
        DWORD dwSubName = MAX_PATH; 
        DWORD dwSubValue = MAX_PATH; 

        while(RegEnumValue(hKey, dwIndex++, SubName.GetBuffer(MAX_PATH), &dwSubName, 
                  NULL, NULL, (unsigned char*)SubValue.GetBuffer(MAX_PATH), &dwSubValue) == ERROR_SUCCESS) 
        { 
                SubName.ReleaseBuffer(); 
                SubValue.ReleaseBuffer(); 

                m_ListCtrlStartupList.InsertItem(nIndex++, SubName.GetBuffer(0)); 
                SubValue.ReleaseBuffer(); 

                SubValue.Empty(); 
                SubName.Empty(); 

                dwSubValue = MAX_PATH; 
                dwSubName = MAX_PATH; 
        } 

        RegCloseKey(hKey); 

        return TRUE; 
}
HKEY_LOCAL_MACHINE 일경우 모든 사용자
HKEY_CURRENT_USER 일 경우 해당 사용자에게만 적용 됩니다.

SubName : 값의 이름입니다. (주로 프로그램의 이름이 들어갑니다.)
SubValue : 값의 내용입니다. (실행할 파일의 경로가 들어갑니다.)

 
m_ListCtrlStartupList.InertItem(nIndex++, SubName.GetBuffer(0)); 는 해당 리스트 박스로 수정해주셔야 합니다.