要實現windows
程式開機執行,需要在登錄檔中相關位置加入鍵值。所謂的鍵可以是你程式的名稱,值就是你程式的所在目錄。所謂的相關位置有兩處:
主鍵hkey_local_machine,software\microsoft\windows\currentversion\run下。
主鍵hkey_current_user, software\microsoft\windows\currentversion\run下。
區別就是前者針對機器上所有使用者,而後者只針對當前使用者。
在程式設計中對主鍵
hkey_current_user
的修改並不需要很高的許可權,而修改
hkey_local_machine
就需要admin
許可權。此時需要在
vs中配置一下即可:專案(右鍵)
--->
屬性--->
配置屬性
--->
鏈結器--->
清單檔案,將
uacexecution level
設成requireadministrator
。1、編輯登錄檔
我用atl的cregkey類實現成功,就談談這個類。官方文件在這裡。
我們將會使用5個函式,open,setstringvalue,deletevalue,querystringvalue,close。
1)開啟登錄檔
long open(
hkey hkeyparent, //主鍵
lpctstr lpszkeyname, //子鍵名稱
regsam samdesired = key_read | key_write //操作許可權,預設是讀寫
) throw( );
2)儲存鍵值
long setstringvalue(
lpctstr pszvaluename, //key名稱
lpctstr pszvalue, //值
dword dwtype = reg_sz //字串型別,reg_sz是字串,reg_multi_sz多字串
) throw( );
3)刪除
long deletevalue(
lpctstr lpszvalue // specifies the value field to remove.其實就是對應上面的pszvaluename
) throw( );
4)查詢
long querystringvalue(
lpctstr pszvaluename, //key名稱
lptstr pszvalue, //返回查詢此key的值
ulong* pnchars //pszvaule的size,這個我也不是特別明了
) throw( );
5)關閉
long close( ) throw( );
2、獲取當前exe路徑
cstring path;
getmodulefilename(null,path.getbuffersetlength(max_path+1),max_path);
path.releasebuffer();
下面的**只是作為測試用,並不十分文雅,只是為大家展示一下解決方案,特此宣告。
我在mfc的對話方塊中加兩個按鈕,乙個是增加鍵值,另乙個刪除鍵值。增加鍵值也就是設定好開機啟動,刪除就是取消開機啟動。
**如下:
1、add
void cautostart2dlg::clickcbadd()
else
else}}
mykey.close();
}
2、delete
void cautostart2dlg::clickcbdelete()
else
} mykey.close();
}
參考:原始碼:
猛擊我!
iOS越獄開機執行程式
2012 12 19 13 05 2387人閱讀收藏 舉報目錄 ps 顯示程序狀態,cpu使用率,記憶體使用情況等 sysctl 檢查設定kernel配置 netstat 顯示網路連線,路由表,介面狀態等 route 路由修改 renice 調整程式執行的優先順序 ifconfig 檢視網路配置 t...
Python 實現Windows開機執行某軟體
開機執行 隨系統啟動的應用程式,當系統啟動之後會自動載入的應用 在登錄檔中新增啟動項便可實現開機啟動。如下 coding utf 8 import win32api import win32con name oftpublic 要新增的項值名稱 path c softpublic.exe 要新增的e...
linux 開機執行程式的方法
開機執行程式的方法 1.在 etc rc.d rc.local檔案中加入程式路徑及程式名 或2.在 etc rc.d init.d 中新增可執行程式,然後在 etc rc.d rcn.d 中新增符號鏈結 n表示執行級別 先檢視 etc inittab檔案中當前系統設定的預設級別,再將符號連線新增到對...