//////////////////////////////////////////////////////////
// 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); // 해제
참조 사이트: