自動啟動代碼:
void CServerApp::SetAutoRun()
{
HKEY hKey;
char* szRegpath = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
long lRet;
// 開啟註冊表
lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szRegpath, 0,
KEY_ALL_ACCESS, &hKey);
if (lRet != ERROR_SUCCESS)
{
AfxMessageBox("開啟自動啟動註冊表失敗!");
RegCloseKey(hKey);
return;
}
// 得到當前檔案的路徑
char szFilePath[MAX_PATH];
DWORD dwRet;
dwRet = GetModuleFileName(NULL, szFilePath, MAX_PATH);
if (dwRet == 0)
{
AfxMessageBox("得到當前檔案路徑失敗!");
return;
}
// 將當前路徑增加到該註冊表中
lRet = RegSetValueEx(hKey, "AttendServer", 0, REG_SZ,
(CONST BYTE*)&szFilePath, strlen(szFilePath) + 1);
if (lRet != ERROR_SUCCESS)
{
AfxMessageBox("寫入自動啟動註冊表失敗!");
RegCloseKey(hKey);
return;
}
RegCloseKey(hKey);
}
取消自動運行代碼:
void CServerApp::CancelAutoRun()
{
HKEY hKey;
char* szRegpath = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
long lRet;
// 開啟註冊表
lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szRegpath, 0,
KEY_ALL_ACCESS, &hKey);
if (lRet != ERROR_SUCCESS)
{
AfxMessageBox("開啟自動啟動註冊表失敗!");
RegCloseKey(hKey);
return;
}
lRet = RegDeleteValue(hKey, "AttendServer");
if (lRet != ERROR_SUCCESS)
{
AfxMessageBox("刪除該軟體在自動啟動註冊表設定失敗!");
RegCloseKey(hKey);
return;
}
RegCloseKey(hKey);
}