아래 코드는 시작메뉴의 레지스트리에 프로그램을 등록하여, 사용자가 로그온시에 자동으로 실행되는 프로그램을 만들때, 유용하게 쓸 수 있다.
setting 값을 TRUE로 설정하면 레지스트리에 등록을 하고, FALSE 로 설정하면 레지스트리에서 삭제한다.
예) set_registy_start_program(TRUE, "hello", "c:\\hello.exe"); -> 등록
set_registy_start_program(FALSE, "hello", NULL); -> 삭제
static int set_registy_start_program(BOOL setting, LPCSTR valuename, LPCSTR exefilename)
{
HKEY key;
LONG ret;
if(setting)
{
if(valuename == NULL || exefilename == NULL)
return FALSE;
if(RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
0L,KEY_WRITE,
&key) != ERROR_SUCCESS)
return FALSE;
ret = RegSetValueEx(key, valuename, 0, REG_SZ, (BYTE*)exefilename, lstrlen(exefilename));
RegCloseKey(key);
if(ret != ERROR_SUCCESS)
return FALSE;
}
else
{
if(RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
0, KEY_ALL_ACCESS,
&key) != ERROR_SUCCESS)
return FALSE;
ret = RegDeleteValue(key, valuename);
RegCloseKey(key);
if(ret != ERROR_SUCCESS)
return FALSE;
}
return TRUE;
}