C语言实现程序开机自启动

 更新时间:2016年01月02日 13:53:25   投稿:hebedich  
本文给大家分享的是一则C语言实现开机自启动的代码,主要是通过C来获取程序路径修改注册表项来实现,有需要的小伙伴可以参考下

程序比较简单,用到了C语言获得自身路径和系统路径,修改注册表项等,某些函数不理解可以查看MSDN

#include<stdio.h>
#include<windows.h>

char *GetFilename(char *p) //得到一个路径的纯文件名
{
  int x=strlen(p);
  char ch='\\';
  char *q=strrchr(p,ch);
  return q;
}

int main()
{
  char *filepath;
  char modlepath[256];
  char syspath[256];

  //打开酷狗应用
  filepath="C:\\Program^ Files\\KuGou\\KGMusic\\KuGou.exe"; 
  system(filepath);

  //将程序移动到系统目录下

  GetModuleFileName(0,modlepath,256); //获得自身路径
  GetSystemDirectory(syspath,256); //得到系统路径

  int ret=CopyFile(modlepath,strcat(syspath,GetFilename(modlepath)),1);//复制,CopyFile的第二个参数是目标文件名
  if(ret)
  {
    printf("%s has been copyed to sys dir %s\n",modlepath,syspath);
  }
  else
  {
    printf("%s is exists",modlepath);
  }

  //程序添加开机自启动
  char regname[]="Software\\Microsoft\\Windows\\CurrentVersion\\Run";
  HKEY hKey;
  ret=RegOpenKey(HKEY_LOCAL_MACHINE,regname,&hKey);    //打开注册表键
  ret=RegSetValueEx(hKey,"MyProm",0,REG_EXPAND_SZ,(unsigned char*)strcat(syspath,GetFilename(modlepath)),25); //设置键值

  if(ret==0)
  {
    printf("succes to write run key.\n");
    RegCloseKey(hKey);
  }
  else
  {
    printf("failed to open regedit.%d\n",ret);
    return 0;
  }
  
  return 0;
}

相关文章

  • C++实现LeetCode(108.将有序数组转为二叉搜索树)

    C++实现LeetCode(108.将有序数组转为二叉搜索树)

    这篇文章主要介绍了C++实现LeetCode(108.将有序数组转为二叉搜索树),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++中rapidjson组装继续简化的方法

    C++中rapidjson组装继续简化的方法

    今天小编就为大家分享一篇关于C++中rapidjson组装继续简化的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • C语言实现餐厅管理系统

    C语言实现餐厅管理系统

    这篇文章主要为大家详细介绍了C语言实现餐厅管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 用while判断输入的数字是否回文数的简单实现

    用while判断输入的数字是否回文数的简单实现

    这篇文章主要介绍了用while判断输入的数字是否回文数的简单实现,需要的朋友可以参考下
    2014-02-02
  • 如何在C++中实现一个正确的时间循环器详解

    如何在C++中实现一个正确的时间循环器详解

    这篇文章主要给大家介绍了关于如何在C++中实现一个正确的时间循环器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • C语言预处理器使用方法讲解

    C语言预处理器使用方法讲解

    C预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把C预处理器(C Preprocessor)简写为CPP
    2022-12-12
  • C语言结构体的具体使用方法

    C语言结构体的具体使用方法

    这篇文章主要介绍了C语言结构体的相关资料,需要的朋友可以参考下
    2021-08-08
  • C++基础入门教程(九):函数指针之回调

    C++基础入门教程(九):函数指针之回调

    这篇文章主要介绍了C++基础入门教程(九):函数指针之回调,本文讲解了函数的地址、声明函数指针、历史原因、typedef挽救复杂的函数指针等内容,需要的朋友可以参考下
    2014-11-11
  • Mac OS上搭建Apache+PHP+MySQL开发环境的详细教程

    Mac OS上搭建Apache+PHP+MySQL开发环境的详细教程

    这篇文章主要介绍了Mac OS上搭建Apache+PHP+MySQL开发环境的详细教程,包括常见的PHP连接MySQL失败问题的解决办法,需要的朋友可以参考下
    2016-01-01
  • Qt调用MATLAB引擎混合编程的过程详解

    Qt调用MATLAB引擎混合编程的过程详解

    这篇文章给大家介绍了Qt调用MATLAB引擎混合编程的全过程,文中通过图文结合的方式给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01

最新评论