本文目錄一覽:
用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就虛了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/288910.html