首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++Builder 修改註冊表完整指南:TRegistry 與 TRegIniFile 實戰範例

     編輯:關於C++

註冊表根鍵值與 TRegIniFile 預設行為

在 Windows 註冊表中,根鍵值是最頂層的分類,常見的有 HKEY_USERS、HKEY_LOCAL_MACHINE 等。當你啟動 regedit 時,左側樹狀結構展示的就是這些根鍵。在 C++Builder 的 TRegIniFile 類別中,預設的根鍵是 HKEY_USERS,這意味著若不指定,讀寫操作將針對當前使用者的設定。

使用 TRegistry 寫入開機自啟動項目

以下範例展示如何使用 TRegistry 將應用程式路徑寫入 Run 鍵值,實現開機自動啟動。TRegIniFile 的操作方式大同小異,只需注意根鍵設定即可。

void __fastcall TfrmMainForm::WriteToMyRegistry(int table_count)
{
    // 建立註冊表物件
    TRegistry *MyRegistry = new TRegistry;
    // 變更預設根鍵為本機電腦,影響所有使用者
    MyRegistry->RootKey = HKEY_LOCAL_MACHINE;

    // 開啟目標鍵值:軟體\Microsoft\Windows\CurrentVersion\Run
    // 第二個參數 true 表示若鍵不存在則建立
    if (!MyRegistry->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true))
    {
        Application->MessageBox("註冊表內容無效", "讀取註冊表出錯", MB_ICONERROR);
        MyRegistry->CloseKey();
        delete MyRegistry;
        return;
    }

    // 寫入字串值:名稱 "myrun",資料為執行檔完整路徑
    MyRegistry->WriteString("myrun", "c:\\sthvcd\\sthvcd.exe");

    // 關閉鍵值並釋放資源
    MyRegistry->CloseKey();
    delete MyRegistry;
}

關鍵點解析

  • RootKey 設定:決定影響範圍,HKEY_LOCAL_MACHINE 需管理員權限,HKEY_CURRENT_USER 則僅影響目前使用者。
  • OpenKey 參數:路徑使用雙反斜線跳脫,第二個參數 true 確保鍵值存在。
  • 錯誤處理:開啟失敗時彈出訊息並釋放物件,避免記憶體洩漏。
  • WriteString:將字串值寫入指定名稱,此處設定開機啟動路徑。

實務上,建議搭配 TRegIniFile 進行 INI 風格的區段操作,或使用 TRegistry 進行更底層的鍵值控制。記得在寫入 HKEY_LOCAL_MACHINE 時,應用程式需以管理員身分執行,否則會遭拒絕存取。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved