VC 开机自动启动程序 方法
生活随笔
收集整理的這篇文章主要介紹了
VC 开机自动启动程序 方法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
正文 字體大小:大?中?小VC?開機(jī)自動(dòng)啟動(dòng)程序代碼
轉(zhuǎn)載▼| 很多監(jiān)控軟件要求軟件能夠在系統(tǒng)重新啟動(dòng)后不用用戶去點(diǎn)擊圖標(biāo)啟動(dòng)項(xiàng)目,而是直接能夠啟動(dòng)運(yùn)行,方法是寫注冊(cè)表Software\\Microsoft\\Windows\\CurrentVersion\\Run。 |
參考程序可以見下:(查找程序目錄的執(zhí)行文件,存在則進(jìn)行添加注冊(cè)表操作) ?
//實(shí)用代碼一
int C***Dlg::CreateRun(void)
{
//添加以下代碼
?HKEY???RegKey;???
?CString???sPath;???
?GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);???
?sPath.ReleaseBuffer();???
?int???nPos;???
?nPos=sPath.ReverseFind('\\');???
?sPath=sPath.Left(nPos);???
?CString???lpszFile=sPath+"\\getip.exe";//這里加上你要查找的執(zhí)行文件名稱???
?CFileFind???fFind;???
?BOOL???bSuccess;???
?bSuccess=fFind.FindFile(lpszFile);???
?fFind.Close();???
?if(bSuccess)???
?{???
??CString???fullName;???
??fullName=lpszFile;???
??RegKey=NULL;???
??RegOpenKey(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&RegKey);???
??RegSetValueEx(RegKey,"getip",0,REG_SZ,(const???unsigned???char*)(LPCTSTR)fullName,fullName.GetLength());//這里加上你需要在注冊(cè)表中注冊(cè)的內(nèi)容???
??this->UpdateData(FALSE);???
?}???
?else???
?{???
??//theApp.SetMainSkin();???
??::AfxMessageBox("沒(méi)找到執(zhí)行程序,自動(dòng)運(yùn)行失敗");???
??exit(0);???
?}???
?return 0;
}
//把上面的getip(共2處)替換成自己想啟動(dòng)程序的名字。
————————————————————————————————————————————
————————————————————————————————————————————
實(shí)用代碼二:
//寫入注冊(cè)表,開機(jī)自啟動(dòng)
HKEY hKey;
//找到系統(tǒng)的啟動(dòng)項(xiàng)
LPCTSTR lpRun = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
//打開啟動(dòng)項(xiàng)Key
long lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpRun, 0, KEY_WRITE, &hKey);
if(lRet == ERROR_SUCCESS)
{
????char pFileName[MAX_PATH] = {0};
????//得到程序自身的全路徑
????DWORD dwRet = GetModuleFileName(NULL, pFileName, MAX_PATH);
????//添加一個(gè)子Key,并設(shè)置值 // 下面的"getip"是應(yīng)用程序名字(不加后綴.exe)
????lRet = RegSetValueEx(hKey, "getip", 0, REG_SZ, (BYTE *)pFileName, dwRet);
????//關(guān)閉注冊(cè)表
????RegCloseKey(hKey);
????if(lRet != ERROR_SUCCESS)
????{
????????AfxMessageBox("系統(tǒng)參數(shù)錯(cuò)誤,不能隨系統(tǒng)啟動(dòng)");
????}
} ?
一、當(dāng)前用戶專有的啟動(dòng)文件夾
????這是許多應(yīng)用軟件自動(dòng)啟動(dòng)的常用位置,Windows自動(dòng)啟動(dòng)放入該文件夾的所有快捷方式。用戶啟動(dòng)文件夾一般在:\Documents and Settings\<用戶名字>\「開始」菜單\程序\啟動(dòng),其中“<用戶名字>”是當(dāng)前登錄的用戶帳戶名稱。
????二、對(duì)所有用戶有效的啟動(dòng)文件夾
????這是尋找自動(dòng)啟動(dòng)程序的第二個(gè)重要位置,不管用戶用什么身份登錄系統(tǒng),放入該文件夾的快捷方式總是自動(dòng)啟動(dòng)——這是它與用戶專有的啟動(dòng)文件夾的區(qū)別所在。該文件夾一般在:\Documents and Settings\All Users\「開始」菜單\程序\啟動(dòng)。
????三、Load注冊(cè)鍵
????介紹該注冊(cè)鍵的資料不多,實(shí)際上它也能夠自動(dòng)啟動(dòng)程序。位置:HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows\load。
????四、Userinit注冊(cè)鍵
????位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit。這里也能夠使系統(tǒng)啟動(dòng)時(shí)自動(dòng)初始化程序。通常該注冊(cè)鍵下面有一個(gè)userinit.exe,如圖,但這個(gè)鍵允許指定用逗號(hào)分隔的多個(gè)程序,例如“userinit.exe,OSA.exe”(不含引號(hào))。
????五、Explorer\Run注冊(cè)鍵
????和load、Userinit不同,Explorer\Run鍵在HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE下都有,具體位置是:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run,和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run。
????六、RunServicesOnce注冊(cè)鍵
????RunServicesOnce注冊(cè)鍵用來(lái)啟動(dòng)服務(wù)程序,啟動(dòng)時(shí)間在用戶登錄之前,而且先于其他通過(guò)注冊(cè)鍵啟動(dòng)的程序。RunServicesOnce注冊(cè)鍵的位置是:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce,和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce。
????七、RunServices注冊(cè)鍵
????RunServices注冊(cè)鍵指定的程序緊接RunServicesOnce指定的程序之后運(yùn)行,但兩者都在用戶登錄之前。RunServices的位置是:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices,和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices。
????八、RunOnce\Setup注冊(cè)鍵
????RunOnce\Setup指定了用戶登錄之后運(yùn)行的程序,它的位置是:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup,和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\Setup。
????九、RunOnce注冊(cè)鍵
????安裝程序通常用RunOnce鍵自動(dòng)運(yùn)行程序,它的位置在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce和HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce。HKEY_LOCAL_MACHINE下面的RunOnce鍵會(huì)在用戶登錄之后立即運(yùn)行程序,運(yùn)行時(shí)機(jī)在其他Run鍵指定的程序之前。HKEY_CURRENT_USER下面的RunOnce鍵在操作系統(tǒng)處理其他Run鍵以及“啟動(dòng)”文件夾的內(nèi)容之后運(yùn)行。如果是XP,你還需要檢查一下HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx。
????十、Run注冊(cè)鍵
????Run是自動(dòng)運(yùn)行程序最常用的注冊(cè)鍵,位置在:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run。
文章出處:http://www.diybl.com/course/3_program/vc/vc_js/200875/130202.html
轉(zhuǎn)載于:https://my.oschina.net/ypimgt/blog/66759
總結(jié)
以上是生活随笔為你收集整理的VC 开机自动启动程序 方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Sring3MVC页面无刷新上传文件
- 下一篇: C++文件操作的6种方式