linux c程序开机自启

linux c程序开机自启,第1张

实现方式1(高大上方式):通过在/etc/init.d下添加启动/停止脚步,并在相应运行级别的/etc/rc.d/rcX.d目录下建立相应软连接的方式。这是LInux标准服务的启动方式,同时也支持采用service XXX start的方式启动和关闭。

1. 在/etc/init.d下放置相应启动程序的脚本,脚本必须实现start, stop, restart三和 *** 作。可以参考该目录已有的脚本,改写一下就行。

2. 在/etc/rc.d/rcX.d(如rc3.d)目录下用ln建立命令建立相应的link文件,K开头为关机时调用的,S开头为开机时使用的,后面接的数字表明这个服务相对于其它服务的启动优先级。可以参考该目录已有的连接文件名,ln一下就行。

实现方式2(菜鸟方式): 修改/etc/rc.d/rc.local。这个文件一般会放一些用户个性化的命令。

有点像早期 DOS 年代的 autoexec.bat 与 config.sys, 它就是一个脚本,在里头添上你的应用就行了。

charregname[]="Software\\Microsoft\\Windows\\CurrentVersion\\Run"/*开机启动路径*/\x0d\x0aHKEYhkResult\x0d\x0aintret=RegOpenKey(HKEY_LOCAL_MACHINE,regname,&hkResult)ret=RegSetValueEx(hkResult,"注册表键名",0,REG_EXPAND_SZ,(unsignedchar"要运行的程序路径"/,25)\x0d\x0aif(ret==0){\x0d\x0aprintf("successtowriterunkey\n")\x0d\x0aRegCloseKey(hkResult)\x0d\x0a}\x0d\x0aelse{\x0d\x0aprintf("failedtoopenregedit.%d\n",ret)\x0d\x0areturn0\x0d\x0a}

开机启动程序一般是 *** 作系统启动后启动的程序

所以不同的 *** 作系统有不同的开机启动方法

以windows为例可以使用注册表也可以将程序复制到开机启动的某个文件夹里

注册表则一般可以有以下几处

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion

\Run;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion

\Runonce;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

\Run;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

\RunOnce;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

\RunOnceEx

等等这些位置

c语言的话可以通过system函数调用reg程序来进行对注册表的 *** 作

也可以使用windows所提供的api

RegCreateKeyEx

RegOpenKeyEx

RegSetValueEx

等等这些注册表 *** 作的函数来完成

而linux *** 作系统(基于linux内核发布的发行版本统称)就与windows不同

一般linux上开机自启可以从自启脚本上进行添加

比如/etc/rc.loca /etc/rc[2-5].d/目录下等等

只需要将要自启的程序路径写入到自启文件里就可以了

c语言也只需要 *** 作文件的函数就能完成

另外也可以使用其它的方法来达到自启的方法

比如感染某个开机自启程序

方法是将自己要启动的程序的代码“注入“到某个开机自启的程序中

比如windows的explorer.exe等

方法可以是将explorer.exe替换成我们的程序

然后奖explorer.exe这个程序移动到其它目录或者更改名称

而我们的程序除了完成我们本身的功能外再多加一个功能,该功能用来创建一个进程调用原有的explorer.exe程序

这样就可以达到开机自启的目的了

当然我们也可以使用一个新的程序来替换explorer.exe

程序的功能有两个,一个是启动我们要自启动的程序,一个用来启动原有的explorer.exe程序

自然也可以将我们要启动的程序的代码直接添加在explorer.exe的头部或者尾部,头部再添加一个代码用来对这个添加完成的最终文件进行切割,切割成两个可执行程序,一个是我们要启动的程序,一个是原有的explorer.exe程序,再分别调用它们

该方法同样也可以用在linux系统上或者其它系统上

总之开机自启的方法有很多

但不同的 *** 作系统的具体方法却不同

(前面的地方没有做过任何修改,这里的地方专给认证人员的

我的答案完全自己手写,请将你认为我是复制粘贴来的地址给我,谢谢)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8019839.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存