0

レジストリにいくつかの変更を加えようとしていますが、他のいくつかのことを試した後、レジストリファイルをインポートしようとしています。「path\reg_file.regをインポートできません:指定されたファイルはレジストリスクリプトではありません。レジストリエディタ内からのみバイナリレジストリファイルをインポートできます。」というエラーが表示されるまで、正しく作成できたと確信していました。

私はテストのためにレジストリファイルをエクスポート、メモ帳で編集、および再インポートしてきましたが、c++からそれらを作成する方法がわかりません。

regファイルに配置した内容は、実行したいことに関連するすべてのHKEY_CURRENT_USERレコードからコピーされます(新しいエントリが実行するはずの手順を手動で実行した後にエクスポートしました)。だから彼らは正しい場所にあるべきです...

使用しました

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

ファイルを書き込むために-バイナリに見えないため(そしてレジストリから読み取ったものに基づいて処理する必要があります)。

これを機能させるにはどうすればよいですか?私は解決策を見つけることができません、そして正直なところ、レジストリは私を怖がらせます。

4

1 に答える 1

2

バイナリファイルの読み取りと書き込みには、入力演算子と出力演算子(>>および<<)を使用しないでください。代わりに、読み取りと書き込みのインターフェイスを使用してください。

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();
于 2012-06-14T04:35:24.663 に答える