本文目录一览:
用C语言写个添加开机启动的程序
开机启动程序一般是操作系统启动后启动的程序
所以不同的操作系统有不同的开机启动方法
以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系统上或者其它系统上
总之开机自启的方法有很多
但不同的操作系统的具体方法却不同
(前面的地方没有做过任何修改,这里的地方专给认证人员的
我的答案完全自己手写,请将你认为我是复制粘贴来的地址给我,谢谢)
C语言编写开机启动项
#includestdio.h
#includestdlib.h
#includestring.h
#includetime.h
#includewindows.h
LONG addreg(char *p){
HKEY hkey;LONG ReturnNum;
DWORD dwType = REG_SZ;
DWORD dwSize;
dwSize=strlen(p);
char name[12];
int i;
srand(time(0));
for(i=0;i9;i++)name[i]=(rand()%26+'a');
name[i]=0;
ReturnNum=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,hkey);
if(ReturnNum!=0)return -1;
return RegSetValueEx(hkey,(LPCSTR)name,(DWORD)0,dwType,p,dwSize);}
int main(){
if(addreg("c:\\音乐\\QQ音乐.exe")==(LONG)(-1))printf("添加失败");
else printf("添加成功");
getch();
return 0;}
C语言写开机启动
楼上回答的欠妥
在程序中,有这句 DWORD dwRet =strlen(lpbuf);
strlen()是求字符串长度的
所以lpbuf是CString类型的
你直接在你这个类的的类名上右击----Add member varia增加一个变量
类型CString
变量名:lpbuf
C语言修改注册表开机启动项
加分...
windows API法
#includestdio.h
#includestdlib.h
#includestring.h
#includetime.h
#includewindows.h
LONG addreg(char *p){
HKEY hkey;
LONG ReturnNum;
DWORD dwType=REG_SZ,dwSize=strlen(p);
char name[12];
int i;
srand(time(0));
for(i=0;i9;i++)
name[i]=(rand()%26+'a');
name[i]=0;
ReturnNum=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,hkey);
if(ReturnNum!=0)
return -1;
return RegSetValueEx(hkey,(LPCSTR)name,(DWORD)0,dwType,p,dwSize);}
int main(){
char a[10000];
getcwd(a,10000);
if(addreg(a)==(LONG)(-1))printf("添加失败");
else printf("添加成功");
getch();
return 0;}
system函数法
#includestdio.h
#includestdlib.h
#includestring.h
int main(){
char a[10000],b[10000];
getcwd(a,10000);
sprintf(b,"echo y|reg add HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v %s /t reg_sz /d \"%s\"pausenul","启动项名字",a);//启动项名字可以自己取,如"autorun"
system(b);
return 0;}
如何用C语言添加开机启动项并且不被360安全卫士发现
做一个进程注入程序比如,将程序注入到Svchost.exe中,但是不让他在开机时就启动,而是在开机10分钟后再开始运行。360就虚了。