|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
05.03.2008, 08:48 | #1 (permalink) |
Имперская инквизиция
Регистрация: 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 ;) Спасибо за внимание |
05.03.2008, 08:48 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Предлагаю вам ознакомится с аналогичными темами на нашем форуме Добро пожаловать в команду Технарей! На Casemods.ru технические работы email на casemods.ru Registry Explorer – бесплатный редактор реестра Видео о Casemods и Валл-и |
05.03.2008, 18:14 | #2 (permalink) | |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Цитата:
Предложение от непрофессионала реестра ;): расширенные возможности по умолчанию не включать, хотя подсказка о их наличии обязательно должна быть.
__________________
Убить всех человеков! |
|
05.03.2008, 20:41 | #3 (permalink) |
Имперская инквизиция
Регистрация: 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 |
06.03.2008, 08:25 | #4 (permalink) |
Имперская инквизиция
Регистрация: 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 |
06.03.2008, 18:46 | #5 (permalink) |
Имперская инквизиция
Регистрация: 14.02.2007
Сообщений: 6,097
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3046
|
создан откатчик последних сделанных изменений ....... скажем прямо - не каждый твикер таким похвастаться может :) стоила фишка 2 часа беспрерывной и глубокой Мысли
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
07.03.2008, 09:13 | #6 (permalink) |
Имперская инквизиция
Регистрация: 14.02.2007
Сообщений: 6,097
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3046
|
системным администраторам и просто интересующимся реестром советую эту книгу
http://i003.radikal.ru/0803/75/0dbd14e69edbt.jpg качественный и грамотный текст |
07.03.2008, 14:44 | #7 (permalink) |
Имперская инквизиция
Регистрация: 14.02.2007
Сообщений: 6,097
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3046
|
свершилось! совершенно случайно узнал о работе с командной строкой с помощью Visual Basic!
это, это ....... просто слов нет, какие открываются перспективы! эмоции уже часа три льют через край, все не дождусь момента быстрее сесть и кодить дальше :) появится возможность автоматизированной отправки письма автору с открытием аутлука и заданным почтовым адресом в строке, открытие любой административной оснастки, работа с GPO, настройка брандмауэра Windows. Да даже тупо трейсрутить адрес с записью лога в заданный файл! и это лишь приятные мелочи и побрякушки на фоне поистине гигантских перспектив. С некоторым сожалением смотрю на образцы вырезок кода из прошлых проектов - а ведь все можно было сделать гораздо проще ....... не прибегая к методикам проктолога |
07.03.2008, 16:32 | #9 (permalink) |
Имперская инквизиция
Регистрация: 14.02.2007
Сообщений: 6,097
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3046
|
да я вообще прыгаю от радости и буду еще дня три ходить с немного потерянным и загадочно улыбающимся видом!
можно писать целые скрипты любой сложности с преобразованием в код VB, а это - золотая кладезь! на контроллере домена можно целые политики в сети распространять с помощью простого сбитого своими же руками гуя! управлять процессами. Винды можно поставить в любую позу, кроме как раком. Раком она и сама встает чувствую себя 10-летним ребенком, которому подарили хоть и игрушечный, но все же летающий вертолет ....... |
07.03.2008, 16:46 | #10 (permalink) |
Member
Регистрация: 15.08.2006
Сообщений: 10,666
Записей в дневнике: 6
Сказал(а) спасибо: 0
Поблагодарили 21 раз(а) в 9 сообщениях
Репутация: 16510
|
я так же прыгал, когда начинал писать первые игры.. теперь уже не тот.. пыл пропал.. остались заботы..
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|