快速启动目录:
这是一种最简单的自启动技术,因为不用修改任何数据。
实现原理:
windows系统有自带的快速启动文件夹,只要把程序(一般是程序快捷方式)放入到这个快速启动文件夹中,系统在启动时就会自动地加载并运行相应的程序,实现开机自启动功能。
注意:快速启动目录并不是一个固定的目录,每台计算机的快速启动目录都不相同。需要使用 SHGetSpecialFolderPath
函数获取Windows系统中快速启动目录的路径,快速启动目录的CSIDL标识值为CSIDL_STARTUP。
使用CopyFile函数,将想要自启动的程序复制到启动目录下即可。(快捷方式同上,也可达到自启动效果)
代码实现:
BOOL CSelfStartDlg::FastStartDirectory(const char* lpszSrcFilePath)
{
BOOL bRet = FALSE;
char szStartupPath[MAX_PATH] = { 0 };
char szDestFilePath[MAX_PATH] = { 0 };
char TempSrcPath[MAX_PATH] = { 0 };
strcpy_s(TempSrcPath, MAX_PATH, lpszSrcFilePath);
//获取快速启动目录的路径
bRet = SHGetSpecialFolderPathA(NULL, szStartupPath, CSIDL_STARTUP, TRUE);
//保存快速启动目录
USES_CONVERSION;
m_FastStartDir = A2W(szStartupPath);
if (FALSE == bRet)
{
return FALSE;
}
//获取目标文件名
PathStripPathA((char*)lpszSrcFilePath);
//拼接路径
wsprintfA(szDestFilePath, "%s\\%s", szStartupPath, lpszSrcFilePath);
//拷贝文件到快速启动目录下
bRet = CopyFileA(TempSrcPath, szDestFilePath, FALSE);
if (FALSE == bRet)
{
return FALSE;
}
return TRUE;
}