Windows Programming

[WINDOWS] 로그온시에 자동으로 프로세스를 실행시킬 수 있도록 레지스트리에 시작메뉴 등록

macro 2007. 3. 17. 23:02
반응형

아래 코드는 시작메뉴의 레지스트리에 프로그램을 등록하여, 사용자가 로그온시에 자동으로 실행되는 프로그램을 만들때, 유용하게 쓸 수 있다.

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;
}

반응형