Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Помогте создать раздел в реестре


Автор: neosapient 12.2.2012, 02:55
Здравствуйте.

Требуется создать раздел в реестре. 
Код

#include <windows.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
    HKEY hKey=0;
    int res=0;
    DWORD resDisposition=0;
    char message[256]={0};
    res = RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\test",0, "", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,NULL,&hKey,&resDisposition);
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,res,MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),message,sizeof(message)-1, NULL);
    printf(message);
    if(res==ERROR_SUCCESS){
        RegCloseKey(hKey);
    }
    return 0;
}


Если запустить под обычным пользователем, то будет отказ в доступе - "Access is denied"
Если запутить под провами администратора, то будет сообщение - "The operation completed successfully"

Однако, в обоих случаях раздел в реестре не создан.
В чем может быть причина и как создать раздел в реестре?

Автор: feodorv 12.2.2012, 04:48
Цитата(neosapient @  12.2.2012,  02:55 Найти цитируемый пост)
Если запустить под обычным пользователем, то будет отказ в доступе - "Access is denied"

Создать раздел в HKEY_LOCAL_MACHINE\\SOFTWARE может только администратор, если, конечно, Вы не меняли его прав доступа.

Цитата(neosapient @  12.2.2012,  02:55 Найти цитируемый пост)
Однако, в обоих случаях раздел в реестре не создан.

А у меня создался. Как Вы определяете, что "нет"?
Четвертым аргументом RegCreateKeyEx лучше поставить NULL.
Если хотите, чтобы потом к создаваемому разделу мог обращаться простой пользователь, то стОит задать соответствующий дескриптор защиты (7ой аргумент функции).

Автор: neosapient 12.2.2012, 12:06
feodorv, добрый день.

Цитата

Создать раздел в HKEY_LOCAL_MACHINE\\SOFTWARE может только администратор, если, конечно, Вы не меняли его прав доступа.
Я> Если запутить под провами администратора, то будет сообщение - "The operation completed successfully"

Понял.

Цитата

А у меня создался. Как Вы определяете, что "нет"?

Я открываю RegEdit и обновляю в нем дерево разделов, но создаваемого раздела не видно.


Дополнительно:
Windows 7
MS VC9 (2008)

Есть ещё идеи?

Автор: xvr 12.2.2012, 20:24
Цитата(neosapient @  12.2.2012,  12:06 Найти цитируемый пост)
Есть ещё идеи?

Есть - http://msdn.microsoft.com/en-us/library/windows/desktop/aa965884%28v=vs.85%29.aspx тут порылся



Автор: neosapient 12.2.2012, 21:32
Нашлась "пропажа"!

У меня Windows 7 x64. Оказывается, для неё всё писалось в
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\test

feodorv и xvr, спасибо за помощь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)