Технический форум
Вернуться   Технический форум > Программирование > Форум программистов


Ответ
 
Опции темы Опции просмотра
Старый 05.03.2008, 08:48   #1 (permalink)
VipeR
Имперская инквизиция
 
Аватар для VipeR
 
Регистрация: 14.02.2007
Сообщений: 6,097
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3046
По умолчанию

задуман проект программы - твикера реестра, потребность в расширенных способностях коего возникла в силу отсутствия необходимых возможностей у аналогичных программ. Сделан предварительный набросок алгоритма работы и основных требований:
- подключение к реестру через WMI и WScript (в зависимости от необходимого уровня сложности доступа);
- различные разделы конфигурационных настроек - от простой настройки проводника до административных настроек типа "ваааааау";
- в будущем планируется осуществить поддержку файлов собственного формата для хранения настроек и сохранения их в шаблоны (по мере набора опыта, думаю, это будет не так уж трудно реализуемо);
- в распрекрасном варианте - сетевая работа утилиты.

Хотяяяяя в ходе долгих размышлений об удобстве работы с реестром WScript решено похоронить ввиду крайней простоты (невозможно применение в именах элементов специальных символов навроде слэшэй и ряда других и прочее), WMI хорош, но поиски наиболее рационального способа в конце концов привели к библиотеке advapi.dll. Она дает программе скилл разговаривать с виндами на родном языке - через специализированный API. Это дает возможность при занесении кода работы с API в дискретный модуль использовать функции быстрого доступа к ключам и значениям в бесконечных ветках реестра. Воть частичное описание и объявление функций (может, пригодятся кому):

Код:
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long
Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As Any) As Long
Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Declare Function RegSetValueExA Lib "advapi32.dll" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByRef lpData As Long, ByVal cbData As Long) As Long
Declare Function RegQueryValueExA Lib "advapi32.dll" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByRef lpData As Long, lpcbData As Long) As Long
Declare Function RegQueryInfoKey Lib "advapi32.dll" Alias "RegQueryInfoKeyA" (ByVal hKey&, ByVal lpClass$, lpcbClass&, ByVal lpReserved&, lpcSubKeys&, lpcbMaxSubKeyLen&, lpcbMaxClassLen&, lpcValues&, lpcbMaxValueNameLen&, lpcbMaxValueLen&, lpcbSecurityDescriptor&, lpftLastWriteTime As Any) As Long
Declare Function RegNotifyChangeKeyValue Lib "advapi32" (ByVal hKey As Long, ByVal bWatchSubTree As Boolean, ByVal dwNotifyFilter As Long, ByVal hEvent As Long, ByVal fAsynchronous As Boolean) As Long
скоро начну выкладывать скрины и сырцы

На данный момент начата реализация пользовательского гуя и ядра - основы. Потому как с дизайном и художественным оформлением я не особо дружу, то дизайн софтины аскетичен до безобразия.

Отсюда вопрос к форумчанам - какие универсальные средства для оформления гуя можете посоветовать? И что еще конкретно можете предложить к проекту реализации? :/
Было бы приятно послушать советы профессионалов реестра Windows ;)
Спасибо за внимание
VipeR вне форума   Ответить с цитированием

Старый 05.03.2008, 08:48
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Предлагаю вам ознакомится с аналогичными темами на нашем форуме

Добро пожаловать в команду Технарей!
На Casemods.ru технические работы
email на casemods.ru
Registry Explorer – бесплатный редактор реестра
Видео о Casemods и Валл-и

Старый 05.03.2008, 18:14   #2 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Цитата:
Сообщение от VipeR
Потому как с дизайном и художественным оформлением я не особо дружу, то дизайн софтины аскетичен до безобразия.
Слишком большие навороты в дизайне тоже утилиту украшать не будут.

Предложение от непрофессионала реестра ;): расширенные возможности по умолчанию не включать, хотя подсказка о их наличии обязательно должна быть.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 05.03.2008, 20:41   #3 (permalink)
VipeR
Имперская инквизиция
 
Аватар для VipeR
 
Регистрация: 14.02.2007
Сообщений: 6,097
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3046
По умолчанию

благодарю-с за совет, AlexZir :)
хотя сама идея проекта - работать с софтиной будут сисадмины, которые отдают себе отчет в том, что и где нажать :)

воть один из первых скринов. Конечно, ничего о программе он толком сказать не может. На форме активен раздел настроек рабочего стола. Я создал крепкую (надеюсь :) ) программную основу для остальных разделов. Начал с рабочего стола из-за возможности быстрой проверки изменения настроек - щелкнул и уже увидел результат, в отличие от большинства административных прибабах. Да и для рабочего стола это лишь первая группа элементов. Сегодня полдня был бета-тестером, баги пофиксил ........ уже замечаю симптомы специфической болезни - программазма (глаза рыбьи, все мысли - в алгоритме работы программы даже во сне. Воздушные зАмки, тяжелые вздохи от того, СКОЛЬКО тысяч строк кода еще ждут, некоторая невменяемость состояния, хихиканье над фразой
антипаттерн "Паблик Морозов". Класс-потомок, созданный в соответствии с этим антипаттерном, выдает по запросу все данные класса-предка, независимо от степени их сокрытия" :D )

http://i036.radikal.ru/0803/03/30c600b43293t.jpg

насчет расширенных возможностей - создам простой лейбл при переходе в более или менее опасные разделы настроек. Если система определит, что за компом юзверь, то автоматом пошлет 220В на левую и правую кнопки мыши
пока печатал, пришла в голову мысль о краткой системе хелпа - простейшие всплывающие подсказки на каждый элемент настройки + строка состояния снизу, она будет отражать изменяемый ключ и значение реестра текущей настройки
насчет гуя - да, согласен, гуем заниматься практически не буду. Красявость на скрине - это виндовая альенваровская тема, не более того
если вы сочтете интерфейс нижеприведенного прошлого проекта приемлемым - изгаляться и прикручивать розовых зайчиков не буду

http://i043.radikal.ru/0803/f8/bb5e835f478dt.jpg
VipeR вне форума   Ответить с цитированием
Старый 06.03.2008, 08:25   #4 (permalink)
VipeR
Имперская инквизиция
 
Аватар для VipeR
 
Регистрация: 14.02.2007
Сообщений: 6,097
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3046
По умолчанию

отлаживаю обработчик событий при откате сделанных изменений, даже работает :)

для разнообразия кое-где использовал WMI (для создания ключа, например):

Код:
        StrComputer = "."
        Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
        StrComputer & "\root\default:StdRegProv")
        StrKeyPath = "Software\Microsoft\Windows\CurrentVersion\Policies\System"
        oReg.CreateKey HKEY_LOCAL_MACHINE, StrKeyPath
переменные из кода необходимо объявить

осознана глупость с ToggleButton'ами. Приделаны нормальные человеческие вкладки :D
VipeR вне форума   Ответить с цитированием
Старый 06.03.2008, 18:46   #5 (permalink)
VipeR
Имперская инквизиция
 
Аватар для VipeR
 
Регистрация: 14.02.2007
Сообщений: 6,097
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3046
По умолчанию

создан откатчик последних сделанных изменений ....... скажем прямо - не каждый твикер таким похвастаться может :) стоила фишка 2 часа беспрерывной и глубокой Мысли
VipeR вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 07.03.2008, 09:13   #6 (permalink)
VipeR
Имперская инквизиция
 
Аватар для VipeR
 
Регистрация: 14.02.2007
Сообщений: 6,097
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3046
По умолчанию

системным администраторам и просто интересующимся реестром советую эту книгу

http://i003.radikal.ru/0803/75/0dbd14e69edbt.jpg

качественный и грамотный текст
VipeR вне форума   Ответить с цитированием
Старый 07.03.2008, 14:44   #7 (permalink)
VipeR
Имперская инквизиция
 
Аватар для VipeR
 
Регистрация: 14.02.2007
Сообщений: 6,097
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3046
По умолчанию

свершилось! совершенно случайно узнал о работе с командной строкой с помощью Visual Basic!
это, это ....... просто слов нет, какие открываются перспективы! эмоции уже часа три льют через край, все не дождусь момента быстрее сесть и кодить дальше :)
появится возможность автоматизированной отправки письма автору с открытием аутлука и заданным почтовым адресом в строке, открытие любой административной оснастки, работа с GPO, настройка брандмауэра Windows. Да даже тупо трейсрутить адрес с записью лога в заданный файл! и это лишь приятные мелочи и побрякушки на фоне поистине гигантских перспектив. С некоторым сожалением смотрю на образцы вырезок кода из прошлых проектов - а ведь все можно было сделать гораздо проще ....... не прибегая к методикам проктолога
VipeR вне форума   Ответить с цитированием
Старый 07.03.2008, 14:59   #8 (permalink)
Hacker
Member
 
Аватар для Hacker
 
Регистрация: 15.08.2006
Сообщений: 10,666
Записей в дневнике: 6
Сказал(а) спасибо: 0
Поблагодарили 21 раз(а) в 9 сообщениях
Репутация: 16510
По умолчанию

VipeR
такое ощущение, что ты открыл для себя исходный код винды.. :D
Hacker вне форума   Ответить с цитированием
Старый 07.03.2008, 16:32   #9 (permalink)
VipeR
Имперская инквизиция
 
Аватар для VipeR
 
Регистрация: 14.02.2007
Сообщений: 6,097
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3046
По умолчанию

да я вообще прыгаю от радости и буду еще дня три ходить с немного потерянным и загадочно улыбающимся видом!
можно писать целые скрипты любой сложности с преобразованием в код VB, а это - золотая кладезь! на контроллере домена можно целые политики в сети распространять с помощью простого сбитого своими же руками гуя! управлять процессами. Винды можно поставить в любую позу, кроме как раком. Раком она и сама встает
чувствую себя 10-летним ребенком, которому подарили хоть и игрушечный, но все же летающий вертолет .......
VipeR вне форума   Ответить с цитированием
Старый 07.03.2008, 16:46   #10 (permalink)
Hacker
Member
 
Аватар для Hacker
 
Регистрация: 15.08.2006
Сообщений: 10,666
Записей в дневнике: 6
Сказал(а) спасибо: 0
Поблагодарили 21 раз(а) в 9 сообщениях
Репутация: 16510
По умолчанию

я так же прыгал, когда начинал писать первые игры.. теперь уже не тот.. пыл пропал.. остались заботы..
Hacker вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 15:44.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.