2

このコードで Windows レジストリにアクセスしようとしました:

CRegKey key;
LPTSTR szBuffer = new TCHAR[50];
ULONG cchBuffer = 257;
key.Open(HKEY_CURRENT_USER, L"HARDWARE", KEY_READ);
ULONG chars;
CString str;

if (key.QueryStringValue(L"Test", 0, &chars) == ERROR_SUCCESS)
{
    key.QueryStringValue(L"Test", str.GetBuffer(chars), &chars);
    str.ReleaseBuffer();
}
key.Close();

Microsoft Visual C++ ランタイム ライブラリのエラーが返されました:

デバッグ アサーションに失敗しました!

プログラム: ...

ファイル: C:\Program Files\Microsoft Visual Studio 11.0\VC\ATLMFC\INCLUDE\altbase.h 行: 6146

式: m_hkey != 0

情報について何とか何とか

無視を押すとクラッシュします。

Visual C++ を使用するように Qt Creator を構成した (と思う) ため、どのコンパイラが使用されているかわかりませんが、出力ディレクトリ os は ..._._MinGW_Qt_SDK_DEBUG と呼ばれます。

今何をする?

4

1 に答える 1

3

HARDWARE近くにWindowsマシンはありませんが、に名前が付けられたサブキーはないと思いHKEY_CURRENT_USERますHKEY_LOCAL_MACHINE

これは、エラーの呼び出しをチェックしていないという事実に加えて、Open本当にやりたいことは次のことを示唆しています。

key.Open(HKEY_LOCAL_MACHINE, L"HARDWARE", KEY_READ);

とにかく、万が一の場合に備えて、エラーを処理することは常に良い考えです。

于 2012-06-02T21:54:05.703 に答える