簡體   English   中英

在c ++中寫入注冊表時出錯

[英]Error writing to registry in c++

我試圖對注冊表進行一些更改,並在嘗試了一些其他的事情后,我現在嘗試導入一個注冊表文件。 我確信我做對了 - 直到我收到錯誤“無法導入路徑\\ reg_file.reg:指定的文件不是注冊表腳本。您只能從注冊表編輯器中導入二進制注冊表文件。”

我一直在導出,使用記事本編輯,並重新導入注冊表文件進行測試 - 但我不知道如何從c ++創建它們。

我放在reg文件中的內容是從與我想要做的相關的所有HKEY_CURRENT_USER記錄中復制的(我在完成新條目應該完成的操作后,我手動輸出了這些記錄)。 所以他們應該在正確的地方......

我用了

input_stream >> reg_entry; //from original file
output_stream << reg_entry; 

寫入文件 - 因為它看起來不是二進制文件(並且必須根據我從注冊表中讀取的內容進行處理)。

我該如何工作? 我找不到解決方案,老實說,注冊表嚇到了我。

您不應該使用輸入和輸出運算符(>>和<<)來進行二進制文件讀寫。 請改用讀寫接口。

ifstream fin("1.reg", ios::in|ios_base::binary);
ofstream fout("2.reg", ios::out|ios_base::binary);

if (fin.is_open() && fout.is_open())
{
    fin.seekg(0, ios::end);
    size_t len = fin.tellg();
    if (0 != len)
    {
        fin.seekg(0, ios::beg);    

        char* buf = new char[len];        
        fin.read(buf, len);        

        // Change the content here

        fout.write(buf, len);

        delete []buf;
    }
}

fin.close();
fout.close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM