1. 程式人生 > 實用技巧 >使用VS開發的一個開機自啟動啟動、可接收指定資料關閉電腦或開啟其他程式

使用VS開發的一個開機自啟動啟動、可接收指定資料關閉電腦或開啟其他程式

使用VS開發的一個開機自啟動啟動、可接收指定資料關閉電腦或開啟其他程式需要注意的幾點

  1. 為了能夠在其他電腦上執行自己寫的程式,需要在VS改一下編譯的執行庫。(專案->屬性->配置屬性->C/C++->程式碼生成->執行庫->多執行緒除錯(/MTd))
  2. 其中用到了開機自啟動,我用到了登錄檔的方法。
 1 //定義路徑最大程度
 2 //定義寫入的登錄檔路徑
 3 #define SELFSTART_REGEDIT_PATH "Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"
 4 
 5 //設定本身開機自啟動 引數為true表示設定自啟,為false 表示取消
6 //獲取程式完整路徑 7 char pName[MAX_PATH] = { 0 }; 8 GetModuleFileNameA(NULL, pName, MAX_PATH); 9 //在登錄檔中寫入啟動資訊 10 HKEY hKey = NULL; 11 LONG lRet = NULL; 12 if (bKey) 13 { 14 //開啟登錄檔 15 lRet = RegOpenKeyExA(HKEY_CURRENT_USER, SELFSTART_REGEDIT_PATH, 0, KEY_ALL_ACCESS, &hKey);
16 //判斷是否成功 17 if (lRet != ERROR_SUCCESS) 18 { 19 return; 20 } 21 else 22 { 23 24 //寫入登錄檔,名為testProtect,可以自己修改 25 RegSetValueExA(hKey, "My_Shutdown", 0, REG_SZ, (const unsigned char*)pName, strlen(pName) + sizeof(char));
26 cout << "註冊成功!" << endl; 27 //關閉登錄檔 28 RegCloseKey(hKey); 29 return; 30 } 31 } 32 else 33 { 34 lRet = RegOpenKeyExA(HKEY_CURRENT_USER, SELFSTART_REGEDIT_PATH, 0, KEY_ALL_ACCESS, &hKey); 35 //判斷是否成功 36 if (lRet != ERROR_SUCCESS) 37 { 38 return; 39 } 40 else 41 { 42 43 //刪除名為testProtect的登錄檔資訊 44 RegDeleteValueA(hKey, "My_Shutdown"); 45 46 //關閉登錄檔 47 RegCloseKey(hKey); 48 return; 49 } 50 }

  3. 我寫的是一個控制檯程式,而且並不需要一個視窗,所以我是用了一個巨集:#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )