HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 04.09.2022, 23:41
Receiver
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами: 5332594

Репутация: 163


По умолчанию

What`s up, niggers! Мне понадобился класс для работы с реестром Windows.

Смог найти только древнейший класс от @SR_team: https://www.blast.hk/threads/13855

Код там старый, кривой и не безопасный. Решил написать свой классик, дропаю всем.

Все методы задокументированы, разобраться не составить труда.

Умные разработчики - предлагайте правки кода в теме.

Исходник: https://github.com/Receiver1/re_regedit

Использование:

C++:





[CODE]
// Подробнее на странице GitHub
re
.
openCatalog
(
RegEdit
::
Key
::
KEY_CURRENT_USER
,
"Software\\test-app"
)
;
re
.
setString
(
"access_token"
,
"new-access-token"
)
;
re
.
setUlong
(
"expires_in"
,
123
)
;
std
::
string accessToken
{
re
.
getString
(
"access_token"
)
}
;
std
::
cout

 
Ответить с цитированием

  #2  
Старый 04.09.2022, 23:50
Izvinisb
Постоянный
Регистрация: 19.06.2018
Сообщений: 961
С нами: 4158550

Репутация: 163


По умолчанию

Цитата:
Сообщение от Receiver  

Смог найти только древнейший класс от @SR_team: https://www.blast.hk/threads/13855
за пределами бласта не пробовал искать?
 
Ответить с цитированием

  #3  
Старый 05.09.2022, 00:00
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Говно одним словом.

Как минимум:

Вместо нормальных эксепшенов юзается самописное говно(спасибо хоть за то, что наследовано от
Код:
std::exception
).

А еще это самописное говно полная хуета. Привет от виртуального деструктора.

В чем проблема была заюзать
Код:
std::system_error?
Поехали дальше:

Вместо
Код:
std::string_view
принимается
Код:
const std::string&
Ну и вишенка на торте - уебанский интерфейс. Есть много вариантов сделать нормально, например как у мапы, или как у жсона, но был выбран самый уебский и систайловый.

В чем проблема сделать

C++:





Код:
RegEdit r
;
if
(
auto
it
=
r
.
find
(
)
;
it
!=
r
.
end
(
)
)
{
std
::
visit
(
*
it
,
[
]
(
const
auto
&
value
)
{
using
T
=
std
::
remove_cv_ref_t

;
if
constexpr
(
std
::
is_same_v

)
{
// ...
}
else
if
constexpr
(
std
::
is_same_v

)
{
// ...
}
else
{
// ...
}
}
)
;
}


Или

C++:





Код:
RegEdit r
;
try
{
auto
value
=
r
.
get

(
"key"
)
;
}
catch
(
const
std
::
runtime_error
&
ec
)
{
// wrong type ...
// ... or key not found
}


Или

C++:





Код:
RegEdit r
;
if
(
auto
it
=
r
.
find
(
)
;
it
!=
r
.
end
(
)
)
{
auto
value
=
it
.
get

(
)
;
}


Короче одним словом:

 
Ответить с цитированием

  #4  
Старый 05.09.2022, 00:11
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от withay  

Нашел за 5 секунд по первой ссылке в гугле

GitHub - m4x1m1l14n/Registry: C++ wrapper for manipulating Windows registry

C++ wrapper for manipulating Windows registry. Contribute to m4x1m1l14n/Registry development by creating an account on GitHub.

github.com


GitHub - GiovanniDicanio/WinReg: Convenient high-level C++ wrapper around the Windows Registry API

Convenient high-level C++ wrapper around the Windows Registry API - GiovanniDicanio/WinReg

github.com

и оба говно
 
Ответить с цитированием

  #5  
Старый 05.09.2022, 01:16
Михаил Бластов
Постоянный
Регистрация: 10.07.2019
Сообщений: 453
С нами: 3602995

Репутация: 98
По умолчанию

Цитата:
Сообщение от kin4stat  

и оба говно
ждем от тебя класс
 
Ответить с цитированием

  #6  
Старый 05.09.2022, 10:42
Receiver
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами: 5332594

Репутация: 163


По умолчанию

Цитата:
Сообщение от kin4stat  

Говно одним словом.

Как минимум:
Вместо нормальных эксепшенов юзается самописное говно(спасибо хоть за то, что наследовано от
Код:
std::exception
).

А еще это самописное говно полная хуета. Привет от виртуального деструктора.

В чем проблема была заюзать
Код:
std::system_error?
Поехали дальше:

Вместо
Код:
std::string_view
принимается
Код:
const std::string&
Ну и вишенка на торте - уебанский интерфейс. Есть много вариантов сделать нормально, например как у мапы, или как у жсона, но был выбран самый уебский и систайловый.

В чем проблема сделать

C++:





Код:
RegEdit r
;
if
(
auto
it
=
r
.
find
(
)
;
it
!=
r
.
end
(
)
)
{
std
::
visit
(
*
it
,
[
]
(
const
auto
&
value
)
{
using
T
=
std
::
remove_cv_ref_t

;
if
constexpr
(
std
::
is_same_v

)
{
// ...
}
else
if
constexpr
(
std
::
is_same_v

)
{
// ...
}
else
{
// ...
}
}
)
;
}


Или

C++:





Код:
RegEdit r
;
try
{
auto
value
=
r
.
get

(
"key"
)
;
}
catch
(
const
std
::
runtime_error
&
ec
)
{
// wrong type ...
// ... or key not found
}


Или

C++:





Код:
RegEdit r
;
if
(
auto
it
=
r
.
find
(
)
;
it
!=
r
.
end
(
)
)
{
auto
value
=
it
.
get

(
)
;
}


Короче одним словом:
Хорошая идея на счёт
Код:
std::system_error
. А вот твою ***ню про итераторы я вообще не понял. Зачем получать итератор через
Код:
find
, чтобы потом в итоге всё равно использовать
Код:
get
, лол? Ты предлагаешь сделать перебор ключей через итераторы, но когда ты обращаешься к реестру - заранее знаешь в каком ключе находится твой каталог. И что начнётся если каталог существует в нескольких ключах одновременно. =/
 
Ответить с цитированием

  #7  
Старый 05.09.2022, 12:18
Receiver
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами: 5332594

Репутация: 163


По умолчанию

Нововведения и исправления:​
  • Исправил краш при вызове
    Код:
    closeCatalog
  • Добавил
    Код:
    removeCatalog
  • Добавил поддержку
    Код:
    REG_BINARY
  • Заменил кастомный
    Код:
    Exception
    на
    Код:
    std::system_error
 
Ответить с цитированием

  #8  
Старый 05.09.2022, 12:55
MeG@LaDo[N] ^_^
Участник форума
Регистрация: 21.07.2020
Сообщений: 280
С нами: 3059886

Репутация: 68
По умолчанию

*****тые теги

 
Ответить с цитированием

  #9  
Старый 05.09.2022, 18:04
Михаил Бластов
Постоянный
Регистрация: 10.07.2019
Сообщений: 453
С нами: 3602995

Репутация: 98
По умолчанию

Цитата:
Сообщение от MeG@LaDo[N] ^_^  

*****тые теги
тему создал не @kin4stat так что не удивительно
 
Ответить с цитированием

  #10  
Старый 06.09.2022, 14:34
Receiver
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами: 5332594

Репутация: 163


По умолчанию

Нововведения и исправления:​
  • Исправлено непредсказуемое поведение
    • При использовании
      Код:
      std::string::resize
      строка реаллоцируется
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...