RegCreateKeyEx создает ключ, хотя не должна...
От: S_Alex74  
Дата: 24.02.02 13:44
Оценка:
HKEY hKey, hKey1;
::RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software"), 0, KEY_READ, &hKey);
DWORD dw;
LONG lErr = ::RegCreateKeyEx(hKey, _T("ABC"), 0, NULL, 0, KEY_READ, NULL, &hKey1, &dw);
_tprintf( _T("%u; %u\n"), lErr, dw );

Возвращает "0; 1" (ну и ключ создает, конечно). Причем, даже если прописАть в RegOpenKeyEx "KEY_NOTIFY" или "KEY_QUERY_VALUE", скажем.
Re: RegCreateKeyEx создает ключ, хотя не должна...
От: Alex Fedotov США  
Дата: 24.02.02 16:30
Оценка:
Здравствуйте S_Alex74, Вы писали:

SA>
SA>HKEY hKey, hKey1;
SA>::RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software"), 0, KEY_READ, &hKey);
SA>DWORD dw;
SA>LONG lErr = ::RegCreateKeyEx(hKey, _T("ABC"), 0, NULL, 0, KEY_READ, NULL, &hKey1, &dw);
SA>_tprintf( _T("%u; %u\n"), lErr, dw );
SA>

SA>Возвращает "0; 1" (ну и ключ создает, конечно). Причем, даже если прописАть в RegOpenKeyEx "KEY_NOTIFY" или "KEY_QUERY_VALUE", скажем.

Кто сказал, что не должна? Назначение функции RegCreateKeyEx — создавать ключи реестра. Флаги доступа вроде KEY_READ и KEY_NOTIFY задают права доступа к возвращаемому HKEY, а в остальном ни на что не влияют.
-- Alex Fedotov
Re[2]: RegCreateKeyEx создает ключ, хотя не должна...
От: S_Alex74  
Дата: 24.02.02 16:46
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF>Кто сказал, что не должна? Назначение функции RegCreateKeyEx — создавать ключи реестра. Флаги доступа вроде KEY_READ и KEY_NOTIFY задают права доступа к возвращаемому HKEY, а в остальном ни на что не влияют.


А как быть с "The key identified by the hKey parameter must have been opened with KEY_CREATE_SUB_KEY access." (c) MSDN?
Re[3]: RegCreateKeyEx создает ключ, хотя не должна...
От: Alex Fedotov США  
Дата: 24.02.02 16:49
Оценка:
Здравствуйте S_Alex74, Вы писали:

AF>>Кто сказал, что не должна? Назначение функции RegCreateKeyEx — создавать ключи реестра. Флаги доступа вроде KEY_READ и KEY_NOTIFY задают права доступа к возвращаемому HKEY, а в остальном ни на что не влияют.


SA>А как быть с "The key identified by the hKey parameter must have been opened with KEY_CREATE_SUB_KEY access." (c) MSDN?


А ты под какой операционной системой запускаешь?
-- Alex Fedotov
Re[4]: RegCreateKeyEx создает ключ, хотя не должна...
От: S_Alex74  
Дата: 24.02.02 16:59
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF>А ты под какой операционной системой запускаешь?


NT4 Server SP6a (VC++6 SP4).
Re[5]: RegCreateKeyEx создает ключ, хотя не должна...
От: Alex Fedotov США  
Дата: 24.02.02 19:29
Оценка:
Здравствуйте S_Alex74, Вы писали:

AF>>А ты под какой операционной системой запускаешь?


SA>NT4 Server SP6a (VC++6 SP4).


XP — та же фигня. Н-да, интересное поведение...

Я по такому случаю тестовую прикладушку сваял (http://www.alexfedotov.com/samples/regsec.zip). Она открывает ключ реестра с указанными правами доступа, запрашивает права доступа полученного хэндла с помощью ZwQueryObject и пытается создать подключ. Подключ успешно создается (и потом удаляется) вне зависимости от прав доступа на хэндл (но с учетом прав доступа на сам ключ, естественно).

Пойду в микрософтовской ньюсгруппе спрошу, что за фигня.
-- Alex Fedotov
Re[6]: RegCreateKeyEx создает ключ, хотя не должна...
От: S_Alex74  
Дата: 25.02.02 18:23
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF>Пойду в микрософтовской ньюсгруппе спрошу, что за фигня.


Ну как, ответили что-нибудь?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.