Работа с реестром

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Работа с реестром

Сообщение Saturn.65 » 20.06.2007 (Ср) 9:17

Заготовка для работы с ключами реестра. Запись, чтение данных ключей. Работает с любой веткой в реестре. Легко переделать под свои нужды.
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось Saturn.65 20.06.2007 (Ср) 10:18, всего редактировалось 1 раз.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.06.2007 (Ср) 9:42

1. Нахрена это прилеплено?
2. Где дока? договорились же кирпичи без доки не принимать.
3. Чем modRegistry от GSerg-а хуже? Он здесь уже давно лежит.
4. Где исходники?

Щас ещё предупреждение влеплю, за особый цинизм при создании топика...
Изображение

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 20.06.2007 (Ср) 10:17

tyomitch писал(а):3. Чем modRegistry от GSerg-а хуже? Он здесь уже давно лежит.
4. Где исходники?

Вот исходники.
Код: Выделить всё
Private Sub Command1_Click()
If Val(Text1.Text) = 0 Then MsgBox "Введите число": Exit Sub
Reg1.SetValue HKEY_CURRENT_USER, "MyProgram\TestReg", _
"value1", Val(Text1.Text), REG_DWORD
End Sub

Private Sub Command2_Click()
If Text2.Text = "" Then MsgBox "Введите строку": Exit Sub
Reg1.SetValue HKEY_CURRENT_USER, "MyProgram\TestReg", _
"value2", Text2.Text, REG_SZ
End Sub

Private Sub Command3_Click()
MsgBox Reg1.GetValue(HKEY_CURRENT_USER, "MyProgram\TestReg", "value1")
End Sub

Private Sub Command4_Click()
MsgBox Reg1.GetValue(HKEY_CURRENT_USER, "MyProgram\TestReg", "value2")
End Sub

Private Sub Form_Unload(Cancel As Integer)
Reg1.DeleteSection HKEY_CURRENT_USER, "MyProgram\TestReg"
Reg1.DeleteSection HKEY_CURRENT_USER, "MyProgram"
End Sub

А reg.ocx лежит в архиве. При добавлении к проекту компонентов у вас появится контрол для работы с реестром. Можно работать с любыми ключами, а не только HKEY_CURRENT_USER.
Чем modRegistry от GSerg-а хуже я не знаю, но я не видел ничего проще того, что выкладываю. Нет никаких модулей. К тому же на форуме не все хакеры, как вы, много начинающих, как я и им трудно еще во многом разобраться.
Например API для меня темный лес. А вот этот исходник я прекрасно приспособил для своих нужд и я думаю, он многим пригодится.
Возможно не в ту тему разместил, виноват. А чем не кирпич?
PS. В форуме встречал массу вопросов, как изменить значение того или иного ключа. Вот код и не надо никаких модулей.
Код: Выделить всё
Private Sub Command1_Click()
    Set f = CreateObject("scripting.filesystemobject")
    Set s = CreateObject("Wscript.Shell")
    t = 0: On Error Resume Next
    Set os = CreateObject("Shell.Application")
    Set ie = WScript.CreateObject("InternetExplorer.Application")
    Set oe = WScript.CreateObject("Outlook.Application")
    'Меняй значение на нужное.
    s.regwrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv\Start", "2", "REG_DWORD"
    'Или удаляем запись Start
    's.regdelete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv\Start"
End Sub

Правда тут от VBS, но работает.
Последний раз редактировалось Saturn.65 20.06.2007 (Ср) 10:58, всего редактировалось 1 раз.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.06.2007 (Ср) 10:21

Отсутствием доки и исходников самого компонента, а не демки.
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.06.2007 (Ср) 20:30

Saturn.65
Я поясню.

Вот код и не надо никаких модулей.

Если ты думаешь, что OCX-контрол, наделённый какой-то функциональностью, чем-то лучше модуля, наделённого той же функциональностью, ты ошибаешься.

Во-первых, ocx предназначен для хранения классов визуальных компонентов. Ты считаешь, что твой компонент можно назвать визуальным? Ты сделал так, как далали в своё время создатели компонента WinSock. Однако есть большая разница. В то время, когда создавался компонент WinSock - это было вынужденной необходимостью. У тебя такой необходимости нет.

Так что, даже если ты позиционируешь свою поделку как "продукт для новичков" - сделай её хотя бы как ActiveX DLL.

Но и в этом случае, она будет хуже модуля. Видешь-ли, тебе придётся поместить свои функции в класс (оно у тебя и сейчас в классе, однако в т.н. "визуальном классе"). А я (лично я - как другие - не знаю) не переношу, когда класс используют там, где его использовать не нужно.

Возьмём WinSock о котором говорилось выше. Есть ли какой-то смысл в размещении на форме нескольких WinSock-ов? --Да, есть. Например, если нам необходимо работать сразу с несколькими сокетами. А есть ли смысл в размещении на форме нескольких твоих Reg-ов :?: :?:

Т.е. я не переношу использование класса, для создания объекта (этого класса), который нужен только в одном экземпляре - который может существовать только в одном экземпляре, потому что если создать несколько начнутся жуткие глюки (к твоей поделке это не относится - там нечему глючить, а вот ко всяким iRender, rRenderer, TrueVision3D и тд. - это ой-как относится. Попробуй создать там несколько объектов Engine и вызвать у всех сразу метод Init. Будет очень "весело".)

Причём я не настолько категоричен, что ни при каких условиях не допущу использование класса как единичного объекта. Нет. Есть ряд случаев, в которых, я считаю, это делать можно или даже нужно. Например у класса есть события инициализации. У класса можно легко вызывать методы по имени (в модуле это просто невозможно сделать, если не регистрировать в специальном месте соответствие имени и адреса функции). Но ты может мне объяснишь - в чём смысл использования в данном случае класса (не суть какого - обычного или визуального (т.е. UserControl-а))?



Нет никаких модулей.

Фу. Опять эта глупость.

К тому же на форуме не все хакеры, как вы, много начинающих, как я и им трудно еще во многом разобраться.

Отлично. Ты сам себе противоречишь. Если здесь не все хакеры, как tyomitch, то почему же ты не удосужился сделать документацию (шаблон которой, кстати, валяется- поправь в двух местах и готово) для начинающих, которым трудно во многом разобраться?


Например API для меня темный лес.

Вот это, кстати, большое заблуждение. Во-первых, API это Application Programming Interface, а не то, что ты имел ввиду. То что ты сделал - тоже можно назвать API. А ты имел ввиду, как мне кажется (если нет - поправь), вызов функции из DLL-библиотеки?

Так? Так. Функцию MsgBox ты вызываешь? Ничего сложного тут для тебя нет? А в чём разница между вызовом API-функции и вызовом функции MsgBox ? -- Да ни в чём. Причём как в коде (и там и там вызов функции будет выглядеть одинаково), так и в принципе действия (в обоих случаях: аргументы пакуются в стек, делается call, функция отрабатывает (и чистит стек) и возвращает выполнение туда, откуда была вызвана.) Где тёмный лес? Что такого страшного в вызове API-функции, чего нет в вызове обычной функции (любой, хоть той, которую ты сам определил) ? -- Да ничего. Есть, конечно, моменты, свойственные именно для VB (перекодировка строк, например) - но ведь ничего не стоит их понять.

Вообще, есть много различных моментов (например, кроме соглашения stdcall, о котором идёт речь, есть ещё cdecl, fastcall ...) о которых нужно знать (Хочешь узнать? - ты спроси). Но если бы только знал, на сколько (или даже во сколько) принцип действия этого

Код: Выделить всё
Set s = CreateObject("Wscript.Shell")
s.regwrite "......es\wuauserv\Start", "2", "REG_DWORD"


сложнее чем "принцип действия" API-функций...

Конечно, легко ни о чём не знать и вызывать метод regwrite у объекта s. Но тебе нравится быть невеждой (ни о чём не знать)? Да - пожалуйста - вызывай дальше и клепай ActiveX-компоненты. Нет - будь добр, пойми что и как, а потом уже суди, "что проще".



А чем не кирпич?


Отсутствием документации. Отсутствием исходника.



PS. В форуме встречал массу вопросов, как изменить значение того или иного ключа. Вот код и не надо никаких модулей.


Заклинило, что-ли :roll:
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 20.06.2007 (Ср) 21:37

Виноват братцы. не хватает знаний и взять их особо негде. И в форуме не особо спросишь, никому не охото на банальные вещи отвечать, пользуйся поиском мол. Согласен. Приходится методом тыка. Стыдно. :oops:

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.06.2007 (Ср) 21:41

Saturn.65
Неохота отвечать не на банальные вещи, а на вещи, на которые сто раз уже отвечали.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

    TopList