自动启动代码:
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);
}