CRegKey
クラス
このクラスは、システム レジストリ内のエントリを操作するためのメソッドを提供します。
重要
このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。
構文
class CRegKey
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CRegKey::CRegKey |
コンストラクター。 |
CRegKey::~CRegKey |
デストラクター。 |
パブリック メソッド
名前 | 説明 |
---|---|
CRegKey::Attach |
m_hKey メンバー ハンドルを hKey に設定して、CRegKey オブジェクトに HKEY をアタッチするには、このメソッドを呼び出します。 |
CRegKey::Close |
m_hKey メンバー ハンドルを解放し、NULL に設定するには、このメソッドを呼び出します。 |
CRegKey::Create |
指定したキーが hKeyParent のサブキーとして存在しない場合は、このメソッドを呼び出して作成します。 |
CRegKey::DeleteSubKey |
レジストリから指定したキーを削除するには、このメソッドを呼び出します。 |
CRegKey::DeleteValue |
m_hKey から値フィールドを削除するには、このメソッドを呼び出します。 |
CRegKey::Detach |
CRegKey オブジェクトから m_hKey メンバー ハンドルをデタッチし、m_hKey を NULL に設定するには、このメソッドを呼び出します。 |
CRegKey::EnumKey |
開いているレジストリ キーのサブキーを列挙するには、このメソッドを呼び出します。 |
CRegKey::Flush |
開いているレジストリ キーのすべての属性をレジストリに書き込むには、このメソッドを呼び出します。 |
CRegKey::GetKeySecurity |
開いているレジストリ キーを保護するセキュリティ記述子のコピーを取得するには、このメソッドを呼び出します。 |
CRegKey::NotifyChangeKeyValue |
このメソッドは、開いているレジストリ キーの属性または内容の変更について呼び出し元に通知します。 |
CRegKey::Open |
このメソッドを呼び出して、指定したキーを開き、 m_hKey このキーのハンドルに設定します。 |
CRegKey::QueryBinaryValue |
指定した値名のバイナリ データを取得するには、このメソッドを呼び出します。 |
CRegKey::QueryDWORDValue |
指定した値名の DWORD データを取得するには、このメソッドを呼び出します。 |
CRegKey::QueryGUIDValue |
指定した値名の GUID データを取得するには、このメソッドを呼び出します。 |
CRegKey::QueryMultiStringValue |
指定した値名の複数文字列データを取得するには、このメソッドを呼び出します。 |
CRegKey::QueryQWORDValue |
指定した値名の QWORD データを取得するには、このメソッドを呼び出します。 |
CRegKey::QueryStringValue |
指定した値名の文字列データを取得するには、このメソッドを呼び出します。 |
CRegKey::QueryValue |
このメソッドを呼び出して、 m_hKey の指定した値フィールドのデータを取得します。 このメソッドの以前のバージョンはサポートされなくなり、ATL_DEPRECATED とマークされます。 |
CRegKey::RecurseDeleteKey |
指定したキーをレジストリから削除し、サブキーを明示的に削除するには、このメソッドを呼び出します。 |
CRegKey::SetBinaryValue |
レジストリ キーのバイナリ値を設定するには、このメソッドを呼び出します。 |
CRegKey::SetDWORDValue |
レジストリ キーの DWORD 値を設定するには、このメソッドを呼び出します。 |
CRegKey::SetGUIDValue |
レジストリ キーの GUID 値を設定するには、このメソッドを呼び出します。 |
CRegKey::SetKeySecurity |
レジストリ キーのセキュリティを設定するには、このメソッドを呼び出します。 |
CRegKey::SetKeyValue |
指定したキーの指定した値フィールドにデータを格納するには、このメソッドを呼び出します。 |
CRegKey::SetMultiStringValue |
レジストリ キーの複数文字列値を設定するには、このメソッドを呼び出します。 |
CRegKey::SetQWORDValue |
レジストリ キーの QWORD 値を設定するには、このメソッドを呼び出します。 |
CRegKey::SetStringValue |
レジストリ キーの文字列値を設定します。 |
CRegKey::SetValue |
m_hKey の指定した値フィールドにデータを格納するには、このメソッドを呼び出します。 このメソッドの以前のバージョンはサポートされなくなり、ATL_DEPRECATED とマークされます。 |
パブリック演算子
名前 | 説明 |
---|---|
CRegKey::operator HKEY |
CRegKey オブジェクトを HKEY に変換します。 |
CRegKey::operator = |
代入演算子。 |
パブリック データ メンバー
名前 | 説明 |
---|---|
CRegKey::m_hKey |
CRegKey オブジェクトに関連付けられたレジストリ キーのハンドルが含まれます。 |
CRegKey::m_pTM |
CAtlTransactionManager オブジェクトへのポインター |
解説
CRegKey
には、システム レジストリ内のキーと値を作成および削除するためのメソッドが含まれます。 レジストリには、ソフトウェアのバージョン番号、インストールされているハードウェアの論理から物理へのマッピング、COM オブジェクトなど、システム コンポーネントのインストール固有の定義セットが含まれています。
CRegKey
は、特定のコンピューターのシステム レジストリへのプログラミング インターフェイスを提供します。 たとえば、特定のレジストリ キーを開く場合は、CRegKey::Open
を呼び出します。 データ値を取得または変更するには、それぞれ CRegKey::QueryValue
または CRegKey::SetValue
を呼び出します。 キーを閉じるには、CRegKey::Close
を呼び出します。
キーを閉じると、そのレジストリ データがハード ディスクに書き込まれます (フラッシュされます)。 このプロセスには数分かかる場合があります。 アプリケーションでレジストリ データをハード ディスクに明示的に書き込む必要がある場合は、 RegFlushKey
Win32 関数を呼び出すことができます。 ただし、RegFlushKey
は多くのシステム リソースを使用するため、本当に必要な場合にのみ呼び出す必要があります。
重要
呼び出し元がレジストリの場所を指定できるようにするメソッドは、信頼できないデータを読み取る可能性があります。 RegQueryValueEx
を使用するメソッドでは、この関数が null で終わる文字列を明示的に処理しないことを考慮する必要があります。 呼び出し元のコードで両方の条件を確認する必要があります。
要件
ヘッダー: atlbase.h
CRegKey::Attach
m_hKey
メンバー ハンドルを hKey
に設定して、CRegKey
オブジェクトに HKEY
をアタッチするには、このメソッドを呼び出します。
void Attach(HKEY hKey) throw();
パラメーター
hKey
レジストリ キーのハンドル。
解説
m_hKey
が NULL
以外の場合は、Attach
によってアサートされます。
CRegKey::Close
m_hKey
メンバー ハンドルを解放し、NULL
に設定するには、このメソッドを呼び出します。
LONG Close() throw();
戻り値
成功した場合は、ERROR_SUCCESS
を返します。それ以外の場合は、エラー値を返します。
CRegKey::Create
指定したキーが hKeyParent
のサブキーとして存在しない場合は、このメソッドを呼び出して作成します。
LONG Create(
HKEY hKeyParent,
LPCTSTR lpszKeyName,
LPTSTR lpszClass = REG_NONE,
DWORD dwOptions = REG_OPTION_NON_VOLATILE,
REGSAM samDesired = KEY_READ | KEY_WRITE,
LPSECURITY_ATTRIBUTES lpSecAttr = NULL,
LPDWORD lpdwDisposition = NULL) throw();
パラメーター
hKeyParent
開いているキーのハンドル。
lpszKeyName
作成または開くキーの名前を指定します。 この名前は、 hKeyParent
のサブキーである必要があります。
lpszClass
作成または開くキーのクラスを指定します。 既定値は REG_NONE です。
dwOptions
キーのオプション。 既定値は REG_OPTION_NON_VOLATILE
です。 使用可能な値と説明の一覧については、Windows SDK の RegCreateKeyEx
を参照してください。
samDesired
キーのセキュリティ アクセス。 既定値は KEY_READ | KEY_WRITE
です。 使用可能な値と説明の一覧については、RegCreateKeyEx
に関するページを参照してください。
lpSecAttr
キーのハンドルを子プロセスによって継承できるかどうかを示す SECURITY_ATTRIBUTES
構造体へのポインター。 既定では、このパラメーターは NULL
です (ハンドルを継承できないことを意味します)。
lpdwDisposition
[出力] NULL
以外の場合、REG_CREATED_NEW_KEY
(キーが存在せず作成された場合) または REG_OPENED_EXISTING_KEY
(キーが存在し開かれた場合) のいずれかを取得します。
戻り値
成功した場合は ERROR_SUCCESS
を返し、キーを開きます。 メソッドが失敗した場合は、戻り値は WINERROR.H
で定義されている 0 以外のエラー コードです。
解説
Create
は m_hKey
メンバーをこのキーのハンドルに設定します。
CRegKey::CRegKey
コンストラクター。
CRegKey() throw();
CRegKey(CRegKey& key) throw();
explicit CRegKey(HKEY hKey) throw();
CRegKey(CAtlTransactionManager* pTM) throw();
パラメーター
key
CRegKey
オブジェクトへの参照です。
hKey
レジストリ キーへのハンドル。
pTM
CAtlTransactionManager
オブジェクトへのポインター
解説
新しい CRegKey
オブジェクトを作成します。 オブジェクトは、既存の CRegKey
オブジェクト、またはレジストリ キーへのハンドルから作成できます。
CRegKey::~CRegKey
デストラクター。
~CRegKey() throw();
解説
デストラクターによって m_hKey
が解放されます。
CRegKey::DeleteSubKey
レジストリから指定したキーを削除するには、このメソッドを呼び出します。
LONG DeleteSubKey(LPCTSTR lpszSubKey) throw();
パラメーター
lpszSubKey
削除するキーの名前を指定します。 この名前は、 m_hKey
のサブキーである必要があります。
戻り値
正常に終了した場合は、ERROR_SUCCESS
を返します。 メソッドが失敗した場合は、戻り値は WINERROR.H
で定義されている 0 以外のエラー コードです。
解説
DeleteSubKey
は、サブキーを持たないキーのみを削除できます。 キーにサブキーがある場合は、代わりに RecurseDeleteKey
を呼び出します。
CRegKey::DeleteValue
m_hKey
から値フィールドを削除するには、このメソッドを呼び出します。
LONG DeleteValue(LPCTSTR lpszValue) throw();
パラメーター
lpszValue
削除する値フィールドを指定します。
戻り値
正常に終了した場合は、ERROR_SUCCESS
を返します。 メソッドが失敗した場合は、戻り値は WINERROR.H
で定義されている 0 以外のエラー コードです。
CRegKey::Detach
CRegKey
オブジェクトから m_hKey
メンバー ハンドルをデタッチし、m_hKey
を NULL
に設定するには、このメソッドを呼び出します。
HKEY Detach() throw();
戻り値
CRegKey
オブジェクトに関連付けられた HKEY。
CRegKey::EnumKey
開いているレジストリ キーのサブキーを列挙するには、このメソッドを呼び出します。
LONG EnumKey(
DWORD iIndex,
LPTSTR pszName,
LPDWORD pnNameLength,
FILETIME* pftLastWriteTime = NULL) throw();
パラメーター
iIndex
サブキーのインデックス。 最初の呼び出しではこのパラメーターを 0 にし、その後の呼び出しに対してインクリメントする必要があります。
pszName
サブキーの名前を受け取るバッファーへのポインター (終端の null 文字を含む)。 キーの完全階層ではなく、サブキーの名前のみがバッファーにコピーされます。
pnNameLength
pszName
パラメーターによって指定されたバッファーのサイズ (TCHARs
単位) を指定する変数へのポインター。 このサイズには、終端の null 文字を含める必要があります。 メソッドから制御が戻るときに、 pnNameLength
が指す変数には、バッファーに格納されている文字数が格納されます。 返されるカウントには、終端の null 文字は含まれません。
pftLastWriteTime
列挙されたサブキーが最後に書き込まれた時刻を受け取る変数へのポインター。
戻り値
成功した場合は、戻り値は ERROR_SUCCESS
です。 メソッドが失敗した場合は、戻り値は WINERROR.H
で定義されている 0 以外のエラー コードです。
解説
サブキーを列挙するには、CRegKey::EnumKey
を 0 のインデックスで呼び出します。 インデックス値をインクリメントし、メソッドが ERROR_NO_MORE_ITEMS
を返すまで繰り返します。 詳細については、Windows SDK の RegEnumKeyEx
に関する記事を参照してください。
CRegKey::Flush
開いているレジストリ キーのすべての属性をレジストリに書き込むには、このメソッドを呼び出します。
LONG Flush() throw();
戻り値
成功した場合は、戻り値は ERROR_SUCCESS
です。 メソッドが失敗した場合は、戻り値は WINERROR.H
で定義されている 0 以外のエラー コードです。
解説
詳細については、Windows SDK の RegEnumFlush
に関する記事を参照してください。
CRegKey::GetKeySecurity
開いているレジストリ キーを保護するセキュリティ記述子のコピーを取得するには、このメソッドを呼び出します。
LONG GetKeySecurity(
SECURITY_INFORMATION si,
PSECURITY_DESCRIPTOR psd,
LPDWORD pnBytes) throw();
パラメーター
si
要求されたセキュリティ情報を示す SECURITY_INFORMATION
値。
psd
要求されたセキュリティ記述子のコピーを受け取るバッファーへのポインター。
pnBytes
psd
が指すバッファーのサイズ (バイト単位)。
戻り値
成功した場合は、戻り値は ERROR_SUCCESS
です。 メソッドが失敗した場合は、戻り値は WINERROR.H
で定義されている 0 以外のエラー コードです。
解説
詳細については、RegGetKeySecurity
を参照してください。
CRegKey::m_hKey
CRegKey
オブジェクトに関連付けられたレジストリ キーのハンドルが含まれます。
HKEY m_hKey;
CRegKey::m_pTM
CAtlTransactionManager
オブジェクトを指すポインター。
CAtlTransactionManager* m_pTM;
解説
CRegKey::NotifyChangeKeyValue
このメソッドは、開いているレジストリ キーの属性または内容の変更について呼び出し元に通知します。
LONG NotifyChangeKeyValue(
BOOL bWatchSubtree,
DWORD dwNotifyFilter,
HANDLE hEvent,
BOOL bAsync = TRUE) throw();
パラメーター
bWatchSubtree
指定したキーとそのすべてのサブキーの変更を報告するか、指定したキーのみの変更を報告するかどうかを示すフラグを指定します。 このパラメーターが TRUE
の場合、メソッドはキーとそのサブキーの変更を報告します。 このパラメーターが FALSE
の場合、メソッドはキーのみの変更を報告します。
dwNotifyFilter
報告する必要がある変更を制御するフラグのセットを指定します。 このパラメーターは、次の値と組み合わせて指定できます。
値 | 意味 |
---|---|
REG_NOTIFY_CHANGE_NAME |
サブキーが追加または削除された場合は、呼び出し元に通知します。 |
REG_NOTIFY_CHANGE_ATTRIBUTES |
セキュリティ記述子情報など、キーの属性に対する変更を呼び出し元に通知します。 |
REG_NOTIFY_CHANGE_LAST_SET |
キーの値に対する変更を呼び出し元に通知します。 これには、値の追加または削除、既存の値の変更が含まれます。 |
REG_NOTIFY_CHANGE_SECURITY |
キーのセキュリティ記述子に対する変更を呼び出し元に通知します。 |
hEvent
イベントに対するハンドル。 bAsync
パラメーターが TRUE
の場合、メソッドがすぐに返され、このイベントを警告することによって変更が報告されます。 bAsync
が FALSE
の場合、hEvent
は無視されます。
bAsync
メソッドが変更を報告する方法を示すフラグを指定します。 このパラメーターが TRUE
の場合、メソッドが直ちに返され、指定されたイベントを警告することによって変更を報告します。 このパラメーターが FALSE
の場合、メソッドは変更が発生するまで制御が戻りません。 hEvent
で有効なイベントが指定されていない場合、bAsync
パラメーターをTRUE
することはできません。
戻り値
成功した場合は、戻り値は ERROR_SUCCESS
です。 メソッドが失敗した場合は、戻り値は WINERROR.H
で定義されている 0 以外のエラー コードです。
解説
Note
指定したキーが削除された場合、このメソッドは呼び出し元に通知しません。
詳細とサンプル プログラムについては、 RegNotifyChangeKeyValue
を参照してください。
CRegKey::Open
このメソッドを呼び出して、指定したキーを開き、 m_hKey
このキーのハンドルに設定します。
LONG Open(
HKEY hKeyParent,
LPCTSTR lpszKeyName,
REGSAM samDesired = KEY_READ | KEY_WRITE) throw();
パラメーター
hKeyParent
開いているキーのハンドル。
lpszKeyName
作成または開くキーの名前を指定します。 この名前は、 hKeyParent
のサブキーである必要があります。
samDesired
キーのセキュリティ アクセス。 既定値は KEY_ALL_ACCESS
です。 使用可能な値と説明の一覧については、Windows SDK の RegCreateKeyEx
を参照してください。
戻り値
成功した場合は ERROR_SUCCESS
を返します。それ以外の場合は、WINERROR.H
で定義されている 0 以外のエラー値を返します。
解説
lpszKeyName
パラメーターが NULL
の場合、または空の文字列を指している場合は、Open
は hKeyParent
によって識別されるキーの新しいハンドルを開きますが、以前に開いたハンドルは閉じません。
CRegKey::Create
とは異なり、Open
では、指定したキーが存在しない場合には作成されません。
CRegKey::operator HKEY
CRegKey
オブジェクトを HKEY
に変換します。
operator HKEY() const throw();
CRegKey::operator =
代入演算子。
CRegKey& operator= (CRegKey& key) throw();
パラメーター
key
コピーするキー。
戻り値
新しいキーへの参照を返します。
解説
この演算子は、現在のオブジェクトから key
をデタッチし、代わりに CRegKey
オブジェクトに割り当てます。
CRegKey::QueryBinaryValue
指定した値名のバイナリ データを取得するには、このメソッドを呼び出します。
LONG QueryBinaryValue(
LPCTSTR pszValueName,
void* pValue,
ULONG* pnBytes) throw();
パラメーター
pszValueName
クエリする値の名前を含む NULL
終端文字列へのポインター。
pValue
値のデータを受け取るバッファーへのポインター。
pnBytes
pValue
パラメーターが指すバッファーのサイズをバイト単位で指定する変数へのポインター。 メソッドが返された場合、この変数にはバッファーにコピーされるデータのサイズが含まれます。
戻り値
メソッドが成功した場合は ERROR_SUCCESS
が返されます。 メソッドで値の読み取りに失敗した場合は、WINERROR.H
で定義されている 0 以外のエラー コードが返されます。 参照されるデータが型 REG_BINARY
でない場合、ERROR_INVALID_DATA
が返されます。
解説
このメソッドは RegQueryValueEx
を使用し、正しい型のデータが返されていることを確認します。 詳細については、 RegQueryValueEx
をご覧ください。
重要
このメソッドを使用すると、呼び出し元はレジストリの場所を指定でき、信頼できないデータを読み取る可能性があります。 また、このメソッドで使用される RegQueryValueEx
関数は、null で終わる文字列を明示的に処理しません。 呼び出し元のコードで両方の条件を確認する必要があります。
CRegKey::QueryDWORDValue
指定した値名の DWORD
データを取得するには、このメソッドを呼び出します。
LONG QueryDWORDValue(
LPCTSTR pszValueName,
DWORD& dwValue) throw();
パラメーター
pszValueName
クエリする値の名前を含む NULL
終端文字列へのポインター。
dwValue
DWORD
を受け取るバッファーへのポインター。
戻り値
メソッドが成功した場合は ERROR_SUCCESS
が返されます。 メソッドで値の読み取りに失敗した場合は、WINERROR.H
で定義されている 0 以外のエラー コードが返されます。 参照されるデータが型 REG_DWORD
でない場合、ERROR_INVALID_DATA
が返されます。
解説
このメソッドは RegQueryValueEx
を使用し、正しい型のデータが返されていることを確認します。 詳細については、 RegQueryValueEx
をご覧ください。
重要
このメソッドを使用すると、呼び出し元はレジストリの場所を指定でき、信頼できないデータを読み取る可能性があります。 また、このメソッドで使用される RegQueryValueEx
関数は、null で終わる文字列を明示的に処理しません。 呼び出し元のコードで両方の条件を確認する必要があります。
CRegKey::QueryGUIDValue
指定した値名の GUID データを取得するには、このメソッドを呼び出します。
LONG QueryGUIDValue(
LPCTSTR pszValueName,
GUID& guidValue) throw();
パラメーター
pszValueName
クエリする値の名前を含む NULL
終端文字列へのポインター。
guidValue
GUID を受け取る変数へのポインター。
戻り値
メソッドが成功した場合は ERROR_SUCCESS
が返されます。 メソッドで値の読み取りに失敗した場合は、WINERROR.H
で定義されている 0 以外のエラー コードが返されます。 参照されるデータが有効な GUID でない場合、ERROR_INVALID_DATA
が返されます。
解説
このメソッドは CRegKey::QueryStringValue
を使用し、CLSIDFromString
を使用して文字列を GUID に変換します。
重要
このメソッドを使用すると、呼び出し元はレジストリの場所を指定でき、信頼できないデータを読み取る可能性があります。
CRegKey::QueryMultiStringValue
指定した値名の複数文字列データを取得するには、このメソッドを呼び出します。
LONG QueryMultiStringValue(
LPCTSTR pszValueName,
LPTSTR pszValue,
ULONG* pnChars) throw();
パラメーター
pszValueName
クエリする値の名前を含む NULL
終端文字列へのポインター。
pszValue
複数文字列データを受け取るバッファーへのポインター。 複数文字列とは、2 つの null 文字で終わる NULL
終端文字列の配列です。
pnChars
pszValue
で指し示されるバッファーのサイズ (TCHARs
単位)。 メソッドが返されると、pnChars
には、取得された複数文字列の TCHARs
単位のサイズ (終端の null 文字を含む) が含まれます。
戻り値
メソッドが成功した場合は ERROR_SUCCESS
が返されます。 メソッドで値の読み取りに失敗した場合は、WINERROR.H
で定義されている 0 以外のエラー コードが返されます。 参照されるデータが型 REG_MULTI_SZ
でない場合、ERROR_INVALID_DATA
が返されます。
解説
このメソッドは RegQueryValueEx
を使用し、正しい型のデータが返されていることを確認します。 詳細については、 RegQueryValueEx
をご覧ください。
重要
このメソッドを使用すると、呼び出し元はレジストリの場所を指定でき、信頼できないデータを読み取る可能性があります。 また、このメソッドで使用される RegQueryValueEx
関数は、null で終わる文字列を明示的に処理しません。 呼び出し元のコードで両方の条件を確認する必要があります。
CRegKey::QueryQWORDValue
指定した値名の QWORD
データを取得するには、このメソッドを呼び出します。
LONG QueryQWORDValue(
LPCTSTR pszValueName,
ULONGLONG& qwValue) throw();
パラメーター
pszValueName
クエリする値の名前を含む NULL
終端文字列へのポインター。
qwValue
QWORD
を受け取るバッファーへのポインター。
戻り値
メソッドが成功した場合は ERROR_SUCCESS
が返されます。 メソッドで値の読み取りに失敗した場合は、WINERROR.H
で定義されている 0 以外のエラー コードが返されます。 参照されるデータが型 REG_QWORD
でない場合、ERROR_INVALID_DATA
が返されます。
解説
このメソッドは RegQueryValueEx
を使用し、正しい型のデータが返されていることを確認します。 詳細については、 RegQueryValueEx
をご覧ください。
重要
このメソッドを使用すると、呼び出し元はレジストリの場所を指定でき、信頼できないデータを読み取る可能性があります。 また、このメソッドで使用される RegQueryValueEx
関数は、null で終わる文字列を明示的に処理しません。 呼び出し元のコードで両方の条件を確認する必要があります。
CRegKey::QueryStringValue
指定した値名の文字列データを取得するには、このメソッドを呼び出します。
LONG QueryStringValue(
LPCTSTR pszValueName,
LPTSTR pszValue,
ULONG* pnChars) throw();
パラメーター
pszValueName
クエリする値の名前を含む NULL
終端文字列へのポインター。
pszValue
文字列データを受け取るバッファーへのポインター。
pnChars
pszValue
が指すバッファーのサイズ (TCHAR 単位)。 メソッドが返されると、pnChars
には、取得された文字列の TCHARs
単位のサイズ (終端の null 文字を含む) が含まれます。
戻り値
メソッドが成功した場合は ERROR_SUCCESS
が返されます。 メソッドで値の読み取りに失敗した場合は、WINERROR.H
で定義されている 0 以外のエラー コードが返されます。 参照されるデータが型 REG_SZ
でない場合、ERROR_INVALID_DATA
が返されます。 メソッドが ERROR_MORE_DATA
を返す場合、pnChars
は、必要なバッファー サイズ (バイト単位) ではなく、0 に等しくなります。
解説
このメソッドは RegQueryValueEx
を使用し、正しい型のデータが返されていることを確認します。 詳細については、 RegQueryValueEx
をご覧ください。
重要
このメソッドを使用すると、呼び出し元はレジストリの場所を指定でき、信頼できないデータを読み取る可能性があります。 また、このメソッドで使用される RegQueryValueEx
関数は、null で終わる文字列を明示的に処理しません。 呼び出し元のコードで両方の条件を確認する必要があります。
CRegKey::QueryValue
このメソッドを呼び出して、 m_hKey
の指定した値フィールドのデータを取得します。 このメソッドの以前のバージョンはサポートされなくなり、ATL_DEPRECATED
とマークされます。
LONG QueryValue(
LPCTSTR pszValueName,
DWORD* pdwType,
void* pData,
ULONG* pnBytes) throw();
ATL_DEPRECATED LONG QueryValue(
DWORD& dwValue,
LPCTSTR lpszValueName);
ATL_DEPRECATED LONG QueryValue(
LPTSTR szValue,
LPCTSTR lpszValueName,
DWORD* pdwCount);
パラメーター
pszValueName
クエリする値の名前を含む NULL
終端文字列へのポインター。 pszValueName
が NULL
または空の文字列 ""
の場合、メソッドはキーの名前のない値または既定値 (該当する場合) の型とデータを取得します。
pdwType
指定した値に格納されているデータの型を示すコードを受け取る変数へのポインター。 型のコードが不要な場合は、pdwType
パラメーターを NULL
にできます。
pData
値のデータを受け取るバッファーへのポインター。 このパラメーターは、データが必須でない場合、NULL
にできます。
pnBytes
pData
パラメーターが指すバッファーのサイズをバイト単位で指定する変数へのポインター。 メソッドが返された場合、この変数には pData
にコピーされるデータのサイズが含まれます。
dwValue
値フィールドの数値データ。
lpszValueName
クエリする値フィールドを指定します。
szValue
値フィールドの文字列データ。
pdwCount
文字列データのサイズ。 その値は、最初は szValue
バッファーのサイズに設定されます。
戻り値
成功した場合は ERROR_SUCCESS
を返します。それ以外の場合は、WINERROR.H
で定義されている 0 以外のエラー コードを返します。
解説
QueryValue
の 2 つの元のバージョンはサポートされなくなり、ATL_DEPRECATED
とマークされます。 これらの形式が使用されている場合、コンパイラにより警告が発行されます。
残りのメソッドは RegQueryValueEx
を呼び出します。
重要
このメソッドを使用すると、呼び出し元はレジストリの場所を指定でき、信頼できないデータを読み取る可能性があります。 また、このメソッドで使用される RegQueryValueEx
関数は、null で終わる文字列を明示的に処理しません。 呼び出し元のコードで両方の条件を確認する必要があります。
CRegKey::RecurseDeleteKey
指定したキーをレジストリから削除し、サブキーを明示的に削除するには、このメソッドを呼び出します。
LONG RecurseDeleteKey(LPCTSTR lpszKey) throw();
パラメーター
lpszKey
削除するキーの名前を指定します。 この名前は、 m_hKey
のサブキーである必要があります。
戻り値
成功した場合は ERROR_SUCCESS
を返します。それ以外の場合は、WINERROR.H
で定義されている 0 以外のエラー値を返します。
解説
キーにサブキーがある場合は、このメソッドを呼び出してキーを削除する必要があります。
CRegKey::SetBinaryValue
レジストリ キーのバイナリ値を設定するには、このメソッドを呼び出します。
LONG SetBinaryValue(
LPCTSTR pszValueName,
const void* pValue,
ULONG nBytes) throw();
パラメーター
pszValueName
設定する値の名前を格納する文字列へのポインター。 この名前の値がまだ存在しない場合は、メソッドによりキーに追加されます。
pValue
指定した値名で格納されるデータを含むバッファーへのポインター。
nBytes
pValue
パラメーターが指す情報のサイズをバイト単位で指定します。
戻り値
成功した場合は、戻り値は ERROR_SUCCESS
です。 メソッドが失敗した場合は、戻り値は WINERROR.H
で定義されている 0 以外のエラー コードです。
解説
このメソッドでは、 RegSetValueEx
を使用してレジストリに値を書き込みます。
CRegKey::SetDWORDValue
レジストリ キーの DWORD
値を設定するには、このメソッドを呼び出します。
LONG SetDWORDValue(LPCTSTR pszValueName, DWORD dwValue) throw();
パラメーター
pszValueName
設定する値の名前を格納する文字列へのポインター。 この名前の値がまだ存在しない場合は、メソッドによりキーに追加されます。
dwValue
指定した値名で格納される DWORD
データ。
戻り値
成功した場合は、戻り値は ERROR_SUCCESS
です。 メソッドが失敗した場合は、戻り値は WINERROR.H
で定義されている 0 以外のエラー コードです。
解説
このメソッドでは、 RegSetValueEx
を使用してレジストリに値を書き込みます。
CRegKey::SetGUIDValue
レジストリ キーの GUID 値を設定するには、このメソッドを呼び出します。
LONG SetGUIDValue(LPCTSTR pszValueName, REFGUID guidValue) throw();
パラメーター
pszValueName
設定する値の名前を格納する文字列へのポインター。 この名前の値がまだ存在しない場合は、メソッドによりキーに追加されます。
guidValue
指定した値名で格納される GUID への参照。
戻り値
成功した場合は、戻り値は ERROR_SUCCESS
です。 メソッドが失敗した場合は、戻り値は WINERROR.H
で定義されている 0 以外のエラー コードです。
解説
このメソッドは CRegKey::SetStringValue
を使用し、StringFromGUID2
を使用して GUID を文字列に変換します。
CRegKey::SetKeyValue
指定したキーの指定した値フィールドにデータを格納するには、このメソッドを呼び出します。
LONG SetKeyValue(
LPCTSTR lpszKeyName,
LPCTSTR lpszValue,
LPCTSTR lpszValueName = NULL) throw();
パラメーター
lpszKeyName
作成または開くキーの名前を指定します。 この名前は、 m_hKey
のサブキーである必要があります。
lpszValue
格納するデータを指定します。 このパラメーターは、NULL
以外にする必要があります。
lpszValueName
設定する値フィールドを指定します。 この名前の値フィールドがキーにまだ存在しない場合は、追加されます。
戻り値
成功した場合は ERROR_SUCCESS
を返します。それ以外の場合は、WINERROR.H
で定義されている 0 以外のエラー コードを返します。
解説
このメソッドを呼び出して、lpszKeyName
キーを作成または開き、lpszValueName
値フィールドにlpszValue
データを格納します。
CRegKey::SetKeySecurity
レジストリ キーのセキュリティを設定するには、このメソッドを呼び出します。
LONG SetKeySecurity(SECURITY_INFORMATION si, PSECURITY_DESCRIPTOR psd) throw();
パラメーター
si
設定するセキュリティ記述子の構成要素を指定します。 この値は、次の値と組み合わせて指定できます。
値 | 意味 |
---|---|
DACL_SECURITY_INFORMATION |
キーの随意アクセス制御リスト (DACL)。 キーに WRITE_DAC アクセス権がある必要があります。または、呼び出し元のプロセスがオブジェクトの所有者である必要があります。 |
GROUP_SECURITY_INFORMATION |
キーのプライマリ グループ セキュリティ識別子 (SID) を設定します。 キーに WRITE_OWNER アクセス権がある必要があります。または、呼び出し元のプロセスがオブジェクトの所有者である必要があります。 |
OWNER_SECURITY_INFORMATION |
キーの所有者 SID を設定します。 キーに WRITE_OWNER アクセス権がある必要があります。または、呼び出し元のプロセスがオブジェクトの所有者であるか、SE_TAKE_OWNERSHIP_NAME 特権が有効である必要があります。 |
SACL_SECURITY_INFORMATION |
キーのシステム アクセス制御リスト (SACL) を設定します。 キーに ACCESS_SYSTEM_SECURITY アクセス権がある必要があります。 このアクセスを取得する適切な方法は、呼び出し元の現在のアクセス トークンで SE_SECURITY_NAME privilege を有効にし、 ACCESS_SYSTEM_SECURITY アクセスのハンドルを開き、特権を無効にすることです。 |
psd
指定したキーに設定するセキュリティ属性を指定する SECURITY_DESCRIPTOR
構造体へのポインター。
戻り値
成功した場合は、戻り値は ERROR_SUCCESS
です。 メソッドが失敗した場合は、戻り値は WINERROR.H
で定義されている 0 以外のエラー コードです。
解説
キーのセキュリティ属性を設定します。 詳細については、 RegSetKeySecurity
をご覧ください。
CRegKey::SetMultiStringValue
レジストリ キーの複数文字列値を設定するには、このメソッドを呼び出します。
LONG SetMultiStringValue(LPCTSTR pszValueName, LPCTSTR pszValue) throw();
パラメーター
pszValueName
設定する値の名前を格納する文字列へのポインター。 この名前の値がまだ存在しない場合は、メソッドによりキーに追加されます。
pszValue
指定された値名で格納される複数文字列データへのポインター。 複数文字列とは、2 つの null 文字で終わる NULL
終端文字列の配列です。
戻り値
成功した場合は、戻り値は ERROR_SUCCESS
です。 メソッドが失敗した場合は、戻り値は WINERROR.H
で定義されている 0 以外のエラー コードです。
解説
このメソッドでは、 RegSetValueEx
を使用してレジストリに値を書き込みます。
CRegKey::SetQWORDValue
レジストリ キーの QWORD
値を設定するには、このメソッドを呼び出します。
LONG SetQWORDValue(LPCTSTR pszValueName, ULONGLONG qwValue) throw();
パラメーター
pszValueName
設定する値の名前を格納する文字列へのポインター。 この名前の値がまだ存在しない場合は、メソッドによりキーに追加されます。
qwValue
指定した値名で格納される QWORD
データ。
戻り値
成功した場合は、戻り値は ERROR_SUCCESS
です。 メソッドが失敗した場合は、戻り値は WINERROR.H
で定義されている 0 以外のエラー コードです。
解説
このメソッドでは、 RegSetValueEx
を使用してレジストリに値を書き込みます。
CRegKey::SetStringValue
レジストリ キーの文字列値を設定します。
LONG SetStringValue(
LPCTSTR pszValueName,
LPCTSTR pszValue,
DWORD dwType = REG_SZ) throw();
パラメーター
pszValueName
設定する値の名前を格納する文字列へのポインター。 この名前の値がまだ存在しない場合は、メソッドによりキーに追加されます。
pszValue
指定された値名で格納される文字列データへのポインター。
dwType
レジストリに書き込む文字列の型。REG_SZ
(既定値) または REG_EXPAND_SZ
(複数文字列の場合)。
戻り値
成功した場合は、戻り値は ERROR_SUCCESS
です。 メソッドが失敗した場合は、戻り値は WINERROR.H
で定義されている 0 以外のエラー コードです。
解説
このメソッドでは、 RegSetValueEx
を使用してレジストリに値を書き込みます。
CRegKey::SetValue
m_hKey
の指定した値フィールドにデータを格納するには、このメソッドを呼び出します。 このメソッドの以前のバージョンはサポートされなくなり、ATL_DEPRECATED
とマークされます。
LONG SetValue(
LPCTSTR pszValueName,
DWORD dwType,
const void* pValue,
ULONG nBytes) throw();
static LONG WINAPI SetValue(
HKEY hKeyParent,
LPCTSTR lpszKeyName,
LPCTSTR lpszValue,
LPCTSTR lpszValueName = NULL);
ATL_DEPRECATED LONG SetValue(
DWORD dwValue,
LPCTSTR lpszValueName);
ATL_DEPRECATED LONG SetValue(
LPCTSTR lpszValue,
LPCTSTR lpszValueName = NULL,
bool bMulti = false,
int nValueLen = -1);
パラメーター
pszValueName
設定する値の名前を格納する文字列へのポインター。 この名前の値がキーにまだ存在しない場合は、メソッドによりキーに追加されます。 pszValueName
が NULL
または空の文字列 ""
の場合、メソッドはキーの名前のない値または既定値の型とデータを設定します。
dwType
pValue
パラメーターが指すデータの種類を示すコードを指定します。
pValue
指定した値名で格納されるデータを含むバッファーへのポインター。
nBytes
pValue
パラメーターが指す情報のサイズをバイト単位で指定します。 データの型が REG_SZ
、REG_EXPAND_SZ
、または REG_MULTI_SZ
の場合、nBytes
には終端の null 文字のサイズを含める必要があります。
hKeyParent
開いているキーのハンドル。
lpszKeyName
作成または開くキーの名前を指定します。 この名前は、 hKeyParent
のサブキーである必要があります。
lpszValue
格納するデータを指定します。 このパラメーターは、NULL
以外にする必要があります。
lpszValueName
設定する値フィールドを指定します。 この名前の値フィールドがキーにまだ存在しない場合は、追加されます。
dwValue
格納するデータを指定します。
bMulti
false の場合、文字列の型が REG_SZ
であることを示します。 true の場合は、文字列の型が REG_MULTI_SZ
の複数文字列であることを示します。
nValueLen
bMulti
が true の場合、nValueLen
はlpszValue
文字列の長さ (文字数) です。 bMulti
が false の場合、値 -1 は、メソッドが長さを自動的に計算することを示します。
戻り値
成功した場合は ERROR_SUCCESS
を返します。それ以外の場合は、WINERROR.H
で定義されている 0 以外のエラー コードを返します。
解説
SetValue
の 2 つの元のバージョンは ATL_DEPRECATED
とマークされ、使用できなくなります。 これらの形式が使用されている場合、コンパイラにより警告が発行されます。
3 番目のメソッドは RegSetValueEx
を呼び出します。