ISpRegDataKey::SetKey
ISpRegDataKey::SetKey sets the hive registry key (HKEY) to use for subsequent token operations.
HRESULT SetKey(
HKEY hkey,
BOOL fReadOnly
);
Parameters
- hkey
- [in] The registry key to use.
- fReadOnly
- [in] Boolean flag setting the keys to read/write status. If TRUE, the registry is read only; FALSE sets it to read and write.
Return values
Value | Description |
---|---|
S_OK | Function completed successfully. |
SPERR_ALREADY_INITIALIZED | Interface is already initialized. |
Example
The following code snippet adds, tests and deletes a superfluous key from the speech registry.
// Declare local identifiers:
HRESULT hr = S_OK;
CComPtr<ISpRegDataKey> cpSpRegDataKey;
CComPtr<ISpDataKey> cpSpCreatedDataKey;
CComPtr<ISpDataKey> cpSpDataKey;
CComPtr<ISpObjectTokenCategory> cpSpCategory;
HKEY hkey;
// Create a bogus key under Voices.
hr = RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Speech\\Voices\\bogus", 0, NULL, 0, KEY_READ | KEY_WRITE, NULL, &hkey;, NULL);
if (SUCCEEDED(hr))
{
hr = cpSpRegDataKey.CoCreateInstance(CLSID_SpDataKey);
}
if (SUCCEEDED(hr))
{
hr = cpSpRegDataKey->SetKey(hkey, false);
}
if (SUCCEEDED(hr))
{
// Do not need to do RegCloseKey on this hkey;
// the handle gets released inside SetKey().
hkey = NULL;
hr = cpSpRegDataKey->QueryInterface(&cpSpCreatedDataKey;);
}
if (SUCCEEDED(hr))
{
// Delete this bogus key.
hr = SpGetCategoryFromId(SPCAT_VOICES, &cpSpCategory;);
}
if (SUCCEEDED(hr))
{
hr = cpSpCategory->GetDataKey(SPDKL_LocalMachine, &cpSpDataKey;);
}
if (SUCCEEDED(hr))
{
hr = cpSpDataKey->DeleteKey(L"bogus");
}