// 在Windows中,存在着很多可以实现开机自启动的地方,可以利用进程监控器Procmon.exe来监控系统开机启动的过程。
// PS:SHGetSpecialFolderPath函数:
// 功能:获取指定的系统目录。
// 原型:BOOL SHGetSpecialFolderPath (
// HWND hwndOwner,
// LPTSTR lpszPath,
// int nFolder,
// BOOL fCreate
// )
// 参数:hwndOwner:窗口所有者的句柄。
// lpszPath:接收返回的路径字符串,缓存区大小至少为MAX_PATH。
// nFolder:目录类型,有很多:
// CSIDL_BITBUCKET:回收站
// CSIDL_CONTROLS:控制面板
// CSIDL_DESKTOP:桌面
// CSIDL_DRIVES:我的电脑
// CSIDL_STARTUP:启动
// CSIDL_SYSTEM:System文件夹
// CSIDL_WINDOWS:Windows目录
// fCreate:表示文件夹不存在时是否创建,为FALSE表示不创建。
// 结果:成功,返回TRUE,失败,返回FALSE。
// PS:实现原理:获取快速启动目录,将exe文件或其快捷方式拷贝到这个目录下,即可实现开机自启动。
// 示例代码:
BOOL AutoRun_Startup(char* lpszSrcFilePath, char* lpszDestFileName)
{
BOOL bRet = FALSE;
char szStartupPath[MAX_PATH] = { 0};
char szDestFilePath[MAX_PATH] = { 0};
// 获取快速启动目录的路径
bRet = ::SHGetSpecialFolderPath(NULL, szStartupPath, CSILD_STARTUP, TRUE);
if (FALSE == bRet)
{
return FALSE;
}
// 构建复制的目标文件路径
::wsprintf(szDestFilePath, "%s\\%s", szStartupPath, lpszDestFileName);
// 复制文件到快速启动目录下
bRet = ::CopyFile(lpszSrcFilePath, szDestFilePath, FALSE);
return bRet;
}
还没有评论,来说两句吧...