Просмотр полной версии : re_regedit - простая работа с реестром
Receiver
04.09.2022, 23:41
What`s up, niggers! Мне понадобился класс для работы с реестром Windows.
Смог найти только древнейший класс от @SR_team (https://www.blast.hk/members/11231/): 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
Izvinisb
04.09.2022, 23:50
Смог найти только древнейший класс от @SR_team: https://www.blast.hk/threads/13855
за пределами бласта не пробовал искать?
kin4stat
05.09.2022, 00:00
Говно одним словом.
Как минимум:
Вместо нормальных эксепшенов юзается самописное говно(спасибо хоть за то, что наследовано от
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
(
)
;
}
Короче одним словом:
https://forum.antichat.xyz/attachments/28138025/
kin4stat
05.09.2022, 00:11
Нашел за 5 секунд по первой ссылке в гугле
GitHub - m4x1m1l14n/Registry: C++ wrapper for manipulating Windows registry (https://github.com/m4x1m1l14n/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 (https://github.com/GiovanniDicanio/WinReg)
Convenient high-level C++ wrapper around the Windows Registry API - GiovanniDicanio/WinReg
github.com
и оба говно
Михаил Бластов
05.09.2022, 01:16
и оба говно
ждем от тебя класс
Receiver
05.09.2022, 10:42
Говно одним словом.
Как минимум:
Вместо нормальных эксепшенов юзается самописное говно(спасибо хоть за то, что наследовано от
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
, лол? Ты предлагаешь сделать перебор ключей через итераторы, но когда ты обращаешься к реестру - заранее знаешь в каком ключе находится твой каталог. И что начнётся если каталог существует в нескольких ключах одновременно. =/
Receiver
05.09.2022, 12:18
Нововведения и исправления:
Исправил краш при вызове
closeCatalog
Добавил
removeCatalog
Добавил поддержку
REG_BINARY
Заменил кастомный
Exception
на
std::system_error
MeG@LaDo[N] ^_^
05.09.2022, 12:55
*****тые теги
https://forum.antichat.xyz/attachments/28138250/
Михаил Бластов
05.09.2022, 18:04
^_^"]
*****тые теги
тему создал не @kin4stat (https://www.blast.hk/members/161331/) так что не удивительно
Receiver
06.09.2022, 14:34
Нововведения и исправления:
Исправлено непредсказуемое поведение
При использовании
std::string::resize
строка реаллоцируется
Dark_Knight
06.09.2022, 20:19
Офиеееть... Ну и C++... Тут же пипец как сложно, я вижу для себя много нового, что написал Киня... Я просто в ахуе от этого C++...
Где Киня так кодить научился??? 🧐🤨🙄
Иди исходники буста посмотри или stl
Да ты чё?! Я там охуею, почти ничего не пойму. От этого C++ можно шизоидом стать из-за постоянных ошибок при компиляции!
Когда у меня были ошибки при компиляции и я не понимал, как их пофиксить, мне хотелось создателю C++ лицо об асфальт растереть...
https://englishlib.org/dictionary/img/wlibrary/p/602817a543b5a1.98341276.jpg
MeG@LaDo[N] ^_^
06.09.2022, 20:32
Иди исходники буста посмотри или stl
https://englishlib.org/dictionary/img/wlibrary/p/602817a543b5a1.98341276.jpg
ты чутка темы попутал)
Dark_Knight
06.09.2022, 20:34
^_^"]
ты чутка темы попутал)
Неа. Не попутал.
F0RQU1N and
14.09.2022, 08:19
и оба говно
вроде нормальные
Привет от виртуального деструктора.
На будущее автору темы - при наследовании от std::exception проблем с виртуальным деструктором нет, комментатор прост не разобрался в наследовании виртуальных функций и серанул не по делу
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot