启动技术之快速目录自启动

清疚 2022-09-16 05:56 194阅读 0赞
  1. // 在Windows中,存在着很多可以实现开机自启动的地方,可以利用进程监控器Procmon.exe来监控系统开机启动的过程。
  2. // PS:SHGetSpecialFolderPath函数:
  3. // 功能:获取指定的系统目录。
  4. // 原型:BOOL SHGetSpecialFolderPath (
  5. // HWND hwndOwner,
  6. // LPTSTR lpszPath,
  7. // int nFolder,
  8. // BOOL fCreate
  9. // )
  10. // 参数:hwndOwner:窗口所有者的句柄。
  11. // lpszPath:接收返回的路径字符串,缓存区大小至少为MAX_PATH。
  12. // nFolder:目录类型,有很多:
  13. // CSIDL_BITBUCKET:回收站
  14. // CSIDL_CONTROLS:控制面板
  15. // CSIDL_DESKTOP:桌面
  16. // CSIDL_DRIVES:我的电脑
  17. // CSIDL_STARTUP:启动
  18. // CSIDL_SYSTEM:System文件夹
  19. // CSIDL_WINDOWS:Windows目录
  20. // fCreate:表示文件夹不存在时是否创建,为FALSE表示不创建。
  21. // 结果:成功,返回TRUE,失败,返回FALSE。
  22. // PS:实现原理:获取快速启动目录,将exe文件或其快捷方式拷贝到这个目录下,即可实现开机自启动。
  23. // 示例代码:
  24. BOOL AutoRun_Startup(char* lpszSrcFilePath, char* lpszDestFileName)
  25. {
  26. BOOL bRet = FALSE;
  27. char szStartupPath[MAX_PATH] = { 0};
  28. char szDestFilePath[MAX_PATH] = { 0};
  29. // 获取快速启动目录的路径
  30. bRet = ::SHGetSpecialFolderPath(NULL, szStartupPath, CSILD_STARTUP, TRUE);
  31. if (FALSE == bRet)
  32. {
  33. return FALSE;
  34. }
  35. // 构建复制的目标文件路径
  36. ::wsprintf(szDestFilePath, "%s\\%s", szStartupPath, lpszDestFileName);
  37. // 复制文件到快速启动目录下
  38. bRet = ::CopyFile(lpszSrcFilePath, szDestFilePath, FALSE);
  39. return bRet;
  40. }

发表评论

表情:
评论列表 (有 0 条评论,194人围观)

还没有评论,来说两句吧...

相关阅读

    相关 开机启动注册表操作

    // Windows启动后,会根据注册表项中的键值来进行枚举,获取启动程序的路径,根据路径创建进程以启动程序。 // 在32系统中,有两个启动注册表项: