[소스긁기-1] 시작프로그램 레지스트리에 등록/해제 함수 김은혁 / eunsiri00
안녕하십니까? 김은혁입니다.
앞으로 계속 시간나는대로 [소스긁기] 시리즈 이어나가겠습니다.
우선 첫번째 [소스긁기]는 시작프로그램 레지스트리에 등록/해제 하는 함수입니다.
다들 아시겠지만 그래도 급할 땐 소스 긁어서 사용하세요. ^^
//////////////////////////////////////////////////////////
// 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); // 해제