Russian Qt Forum

Qt => Вопросы новичков => Тема начата: nikeo от Январь 27, 2013, 15:48



Название: Изменить значение реестра
Отправлено: nikeo от Январь 27, 2013, 15:48
Всем доброго времени суток!
У меня возникла проблема - функция не меняет значение реестра,возвращает значение равное 5(ERROR_ACCESS_DENIED)
вот собственно весь код:
Код:
 LONG lResult;
      HKEY hKey;
      const wchar_t* lpSubKey=L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon";

      lResult=RegOpenKeyExW(HKEY_LOCAL_MACHINE,
                                      lpSubKey,
                                             0,
                                KEY_SET_VALUE|KEY_READ,
                                         &hKey);

      if(lResult == ERROR_SUCCESS)
          qDebug()<<"its okay!:) "<<lResult;


      const wchar_t* lpName=L"Shell";
     const wchar_t* lpValueEx=L"test.exe";


      lResult=RegSetValueExW(hKey,
                 lpName,
                 0,
                 REG_SZ,
                 (BYTE*)lpValueEx,
                 ((DWORD)wcslen(lpValueEx)+1)*sizeof(wchar_t));
      RegCloseKey(hKey);

      if (lResult != ERROR_SUCCESS)
          qDebug()<<"OOOpps!"<<lResult;

стоит win 7


Название: Re: Изменить значение реестра
Отправлено: Old от Январь 27, 2013, 16:13
А что тебе собственно не понятно в ERROR_ACCESS_DENIED. :)
У тебя не хватает прав на изменение этого значения.


Название: Re: Изменить значение реестра
Отправлено: nikeo от Январь 27, 2013, 16:34
А что тебе собственно не понятно в ERROR_ACCESS_DENIED. :)
У тебя не хватает прав на изменение этого значения.


это то я понимаю)))исправить то это как?


Название: Re: Изменить значение реестра
Отправлено: Old от Январь 27, 2013, 16:57
это то я понимаю)))исправить то это как?
Повышением прав у процесса. Почитай про UAC, файлы манифесты и вообще систему безопасности винды.


Название: Re: Изменить значение реестра
Отправлено: Bepec от Январь 27, 2013, 19:27
А если вообще просто выражаться - хрен что сделаешь :)

Ты же хочешь поменять шелл винды? :)  ну флаг в руки. Иным способом, кроме как запроса пароля у пользователя не сделать.

PS у меня подобная проблема, но у меня проще - у меня это система авторизации :)

PPS и да, гораздо проще использовать стандартную утилиту reg.