RegCreateKeyEx всегда возвращает 5 ERROR_ACCESS_DENIED, даже если администраторC++

Программы на C++. Форум разработчиков
Ответить
Гость
 RegCreateKeyEx всегда возвращает 5 ERROR_ACCESS_DENIED, даже если администратор

Сообщение Гость »


Я действительно застрял... У меня есть программа для Windows, которую я пытаюсь просто записать в реестр.

Проблема в том, что RegCreateKeyEx() возвращает 5 (ERROR_ACCESS_DENIED).

Мое имя пользователя для входа принадлежит к локальной группе администраторов.

Параметр lpdwDisposition в RegCreateKeyEx() получает значение 2 (REG_OPENED_EXISTING_KEY), но RegCreateKeyEx() по-прежнему возвращает ERROR_ACCESS_DENIED.

Это 32-битная программа, поэтому для SAM установлено значение KEY_WOW64_32KEY | KEY_WRITE

Вот минимальный рабочий пример кода:
#include #include #include void GetCurrentDateAndTimeWithMs (WCHAR *sValueData, DWORD dwSizeValueData) { CONST INT iSize = 64; WCHAR sDate[iSize] = {0}; WCHAR sTime[iSize] = {0}; СИСТЕМНОЕ ВРЕМЯ lt = {0}; GetLocalTime(&lt); GetDateFormat(LOCALE_USER_DEFAULT, NULL, &lt, NULL, sDate, iSize); GetTimeFormat(LOCALE_USER_DEFAULT, NULL, &lt, NULL, sTime, iSize); StringCchPrintf(sValueData, dwSizeValueData, L"%s %s.%u",sDate, sTime, lt.wMilliсекунды); } DWORD SaveToRegistry(CONST WCHAR *sPath, CONST WCHAR *sValueName, CONST WCHAR *sValueData) { ЛСТАТУС dwRV = 0; HKEY hKey = NULL; ДВОЙНОЕ СЛОВО = 0; DWORD dwType_Local = REG_SZ; dwRV = RegCreateKeyExW (HKEY_LOCAL_MACHINE, sPath, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WOW64_32KEY | KEY_WRITE, NULL, &hKey, &rv); если (dwRV == ОШИБКА_УСПЕХ) { DWORD dwLenData = (DWORD) wcslen(sValueData) +1; dwRV = RegSetValueExW(hKey, sValueName, 0, dwType_Local, (LPBYTE) sValueData, dwLenData * sizeof(WCHAR)); } RegCloseKey(hKey); вернуть dwRV; } интервал основной() { WCHAR sDT[64] = {0}; GetCurrentDateAndTimeWithMs(sDT, 64); SaveToRegistry(L"Программное обеспечение\\Компания\\Продукт\\Настройки", L"CurrentDateTime", sDT); }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»