C/C++/MFC
시작프로그램 레지스트리에 등록/해제 함수
2006.07.03 18:26
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); // 해제
//////////////////////////////////////////////////////////
// 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); // 해제