//////////////////////////////////////////////////////////
// Function Name
// SetRegistyStartProgram
//
// Parameters
// bAutoExec[in] : TRUE이면 시작프로그램 레지스트리에 등록, FALSE면 해제
// lpValueName[in] : 설정할 값의 이름
// lpExeFileName[in] : 실행시킬 프로그램 Full 경로 (NULL 일수 있음, 단, bAutoExec값이 FALSE이여야 함)
//
// Return Values
// 시작프로그램 레지스트리에 등록/헤제 성공이면 TRUE, 실패면 FALSE
//
BOOL CAutoRunProgramDlg::SetRegistyStartProgram(BOOL bAutoExec, LPCSTR lpValueName, LPCSTR lpExeFileName)
{
HKEY hKey;
LONG lRes;
if(bAutoExec)
{
if(lpValueName == NULL || lpExeFileName == NULL)
return FALSE;
//lRes = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0L, KEY_ALL_ACCESS, &hKey);
//lRes = RegOpenKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0L, KEY_WRITE, &hKey);
lRes = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0L, KEY_WRITE, &hKey);
if( lRes == ERROR_SUCCESS )
{
lRes = ::RegSetValueEx(hKey, lpValueName, 0, REG_SZ, (BYTE*)lpExeFileName, lstrlen(lpExeFileName));
::RegCloseKey(hKey);
if(lRes == ERROR_SUCCESS)
AfxMessageBox("성공적으로 시작 프로그램에서 등록됐습니다.");
else
{
AfxMessageBox("Error");
return FALSE;
}
}
else if(lRes == ERROR_ACCESS_DENIED)
{
AfxMessageBox("이 소프트웨어를 설치하기 위해서는 이 컴퓨터에 대한 충분한 권한이 있어야 합니다.");
return FALSE;
}
else
{
AfxMessageBox("Error");
return FALSE;
}
}
else
{
lRes = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hKey);
if( lRes != ERROR_SUCCESS )
{
return FALSE;
}
lRes = RegDeleteValue(hKey, lpValueName);
RegCloseKey(hKey);
if(lRes == ERROR_SUCCESS)
AfxMessageBox("성공적으로 시작 프로그램에서 삭제됐습니다.");
else if(lRes == ERROR_FILE_NOT_FOUND)
{
AfxMessageBox("프로그램이 시작 프로그램에 등록되어 있지 않습니다.");
return FALSE;
}
else
{
AfxMessageBox("시작 프로그램에서 삭제하지 못했습니다.");
return FALSE;
}
}
return TRUE;
ex >
SetRegistyStartProgram(TRUE, "AAA", "C:\\Test\\A.exe"); // 등록
SetRegistyStartProgram(FALSE, "AAA", NULL); // 해제
댓글 없음:
댓글 쓰기