메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

logo

C/C++/MFC
http://www.devpia.com/forum/BoardView.aspx?no=6892&page=1&Tpage=1&forumname=vc_lec&stype=&ctType=&KeyR=title&KeyC=


//////////////////////////////////////////////////////////
//  Function Name  
//      SetRegistyStartProgram
//
//  Parameters
//      bAutoExec[in]     : TRUE이면 시작프로그램 레지스트리에 등록, FALSE면 해제
//      lpValueName[in]   : 설정할 값의 이름
//      lpExeFileName[in] : 실행시킬 프로그램 Full 경로 (NULL 일수 있음, 단, bAutoExec값이 FALSE이여야 함)
//
//  Return Values
//      시작프로그램 레지스트리에 등록/헤제 성공이면 TRUE, 실패면 FALSE    
//
static BOOL SetRegistyStartProgram(BOOL bAutoExec, LPCSTR lpValueName, LPCSTR lpExeFileName)
{
    HKEY hKey;
    LONG lRes;
    if(bAutoExec)
    {
        if(lpValueName == NULL || lpExeFileName == NULL)
            return FALSE;
        if(RegOpenKeyEx(
            HKEY_LOCAL_MACHINE,
            \"SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run\",
            0L,KEY_WRITE,
            &hKey
            ) != ERROR_SUCCESS)
            return FALSE;    

        lRes = RegSetValueEx(hKey,
                lpValueName,
                0,      
                REG_SZ,    
                (BYTE*)lpExeFileName,  
                lstrlen(lpExeFileName));
            
        RegCloseKey(hKey);

        if(lRes != ERROR_SUCCESS)
            return FALSE;
    }
    else
    {
        if(RegOpenKeyEx(
            HKEY_LOCAL_MACHINE,
            \"SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run\",
            0, KEY_ALL_ACCESS,
            &hKey) != ERROR_SUCCESS)
            return FALSE;

        lRes = RegDeleteValue(hKey, lpValueName);      

        RegCloseKey(hKey);

        if(lRes != ERROR_SUCCESS)
            return FALSE;
    }

    return TRUE;
}


ex >

SetRegistyStartProgram(TRUE, \"AAA\", \"C:\\\\Test\\\\A.exe\");    // 등록
SetRegistyStartProgram(FALSE, \"AAA\", NULL);    // 해제