[cpp] view plain copy print ?
- void CSetDlg::OnBnClickedSetSet()
- {
- // TODO: 在此添加控件通知處理程式代碼
- int RunOnStartFlag=0;
- RunOnStartFlag=m_RunOnStart.GetCheck();
- if (BST_CHECKED==RunOnStartFlag)
- {
- //設定開機啟動
- //根鍵、子鍵名稱、子鍵句柄
- HKEY hRoot=HKEY_LOCAL_MACHINE;
- char szSubKey[MAX_PATH]="Software//Microsoft//Windows//CurrentVersion//Run";
- HKEY hKey;
- //打開指定的子鍵
- //如果不存在,則不建立
- DWORD dwDisposition=REG_OPENED_EXISTING_KEY;
- LONG iRet=::RegCreateKeyEx(hRoot,szSubKey,0,NULL,
- REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,
- NULL,&hKey,&dwDisposition);
- //錯誤傳回
- if (iRet!=ERROR_SUCCESS)
- {
- MessageBox("開機啟動設定失敗!");
- }
- //得到目前檔案的路徑+檔案名
- char szFileName[MAX_PATH];
- ::GetModuleFileName(NULL,szFileName,MAX_PATH);
- //建立一個新的鍵值
- iRet=::RegSetValueEx(hKey,"CheckUpdate",0,REG_SZ,
- (byte*)szFileName,strlen(szFileName));
- //關閉子鍵句柄
- ::RegCloseKey(hKey);
- }
- if (BST_UNCHECKED==RunOnStartFlag)
- {
- //取消開機啟動
- HKEY hRoot=HKEY_LOCAL_MACHINE;
- char szSubKey[MAX_PATH]="Software//Microsoft//Windows//CurrentVersion//Run";
- HKEY hKey;
- //打開指定的子鍵
- LONG iRet=::RegOpenKeyEx(hRoot,szSubKey,0,KEY_ALL_ACCESS,&hKey);
- if (iRet==ERROR_SUCCESS)
- {
- ::RegDeleteValue(hKey,"CheckUpdate");
- //關閉子鍵句柄
- ::RegCloseKey(hKey);
- }
- else
- {
- MessageBox("取消開機啟動設定失敗!");
- }
- }
- }
void CSetDlg::OnBnClickedSetSet()
{
// TODO: 在此添加控件通知處理程式代碼
int RunOnStartFlag=0;
RunOnStartFlag=m_RunOnStart.GetCheck();
if (BST_CHECKED==RunOnStartFlag)
{
//設定開機啟動
//根鍵、子鍵名稱、子鍵句柄
HKEY hRoot=HKEY_LOCAL_MACHINE;
char szSubKey[MAX_PATH]="Software//Microsoft//Windows//CurrentVersion//Run";
HKEY hKey;
//打開指定的子鍵
//如果不存在,則不建立
DWORD dwDisposition=REG_OPENED_EXISTING_KEY;
LONG iRet=::RegCreateKeyEx(hRoot,szSubKey,0,NULL,
REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,
NULL,&hKey,&dwDisposition);
//錯誤傳回
if (iRet!=ERROR_SUCCESS)
{
MessageBox("開機啟動設定失敗!");
}
//得到目前檔案的路徑+檔案名
char szFileName[MAX_PATH];
::GetModuleFileName(NULL,szFileName,MAX_PATH);
//建立一個新的鍵值
iRet=::RegSetValueEx(hKey,"CheckUpdate",0,REG_SZ,
(byte*)szFileName,strlen(szFileName));
//關閉子鍵句柄
::RegCloseKey(hKey);
}
if (BST_UNCHECKED==RunOnStartFlag)
{
//取消開機啟動
HKEY hRoot=HKEY_LOCAL_MACHINE;
char szSubKey[MAX_PATH]="Software//Microsoft//Windows//CurrentVersion//Run";
HKEY hKey;
//打開指定的子鍵
LONG iRet=::RegOpenKeyEx(hRoot,szSubKey,0,KEY_ALL_ACCESS,&hKey);
if (iRet==ERROR_SUCCESS)
{
::RegDeleteValue(hKey,"CheckUpdate");
//關閉子鍵句柄
::RegCloseKey(hKey);
}
else
{
MessageBox("取消開機啟動設定失敗!");
}
}
}
基本思路就是先建立一個系統資料庫項,然後打開系統資料庫,再進行寫入,讀取系統資料庫也是類似的,先打開,然後讀取,然後關閉鍵值。
而開機啟動項目是放在系統資料庫的"HKEY_LOCAL_MACHINE//Software//Microsoft//Windows//CurrentVersion//Run"這個項目下的,是以呢隻要向這個地方寫入自己的程式的名稱以及路徑,下次重新啟動機器時,你會發現自己的程式開機啟動了!
貼圖:
自己寫的一段代碼,雖然不怎麼好吧,但是這是自己第一次寫系統資料庫,沒什麼經驗,歡迎拍磚哈!