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++中vector可以作为map的键值实例代码

    C++中vector可以作为map的键值实例代码

    这篇文章主要介绍了C++中vector可以作为map的键值实例代码,需要的朋友可以参考下
    2017-07-07
  • C语言实现简单电子通讯录(2)

    C语言实现简单电子通讯录(2)

    这篇文章主要为大家详细介绍了C语言实现简单电子通讯录的第二部分,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • C语言怎么连接两个数组的内容你知道吗

    C语言怎么连接两个数组的内容你知道吗

    这篇文章主要为大家介绍了C语言怎么连接两个数组的内容,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • 用C语言实现单链表的各种操作(二)

    用C语言实现单链表的各种操作(二)

    本篇文章是对用C语言实现单链表的各种操作进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C/C++ assert()函数用法案例总结

    C/C++ assert()函数用法案例总结

    这篇文章主要介绍了C/C++ assert()函数用法案例总结,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • C++中不得不说的map容器

    C++中不得不说的map容器

    大家好,本篇文章主要讲的是C++中不得不说的map容器,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • C++ Boost Graph算法超详细精讲

    C++ Boost Graph算法超详细精讲

    这篇文章主要介绍了C++ Boost Graph算法,我门尝试使用Boost.Graph库来运行Goldberg的最大流算法。 Boost.Graph将其称为push_relabel_max_flow
    2022-10-10
  • C++ getcwd函数获取项目运行路径方法详解

    C++ getcwd函数获取项目运行路径方法详解

    在Linux下做QT项目时,需要获取项目的运行路径,于是用getcwd函数进行获取,然后在Windows下进行测试,发现获取到的是程序的项目路径,即代码文件路径,然后再Linux QT中测试,获取到的又是运行路径,这就很纳闷了。经过再三测试,终于发现了原因
    2022-10-10
  • 解决scanf_s输入%d%c%d格式错误的问题

    解决scanf_s输入%d%c%d格式错误的问题

    这篇文章主要介绍了解决scanf_s输入%d%c%d格式错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • C++实现团购订单管理系统

    C++实现团购订单管理系统

    这篇文章主要为大家详细介绍了如何利用C++实现团购订单管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-12-12

最新评论