• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Casemods Registry Tweaker

  • Автор темы Автор темы VipeR
  • Дата начала Дата начала

VipeR

Имперская инквизиция
Почётный участник
Регистрация
14 Фев 2007
Сообщения
6,097
Реакции
45
Баллы
0
задуман проект программы - твикера реестра, потребность в расширенных способностях коего возникла в силу отсутствия необходимых возможностей у аналогичных программ. Сделан предварительный набросок алгоритма работы и основных требований:
- подключение к реестру через 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 написал(а):
Потому как с дизайном и художественным оформлением я не особо дружу, то дизайн софтины аскетичен до безобразия.
Слишком большие навороты в дизайне тоже утилиту украшать не будут.

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

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



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

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

для разнообразия кое-где использовал 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
 
создан откатчик последних сделанных изменений ....... скажем прямо - не каждый твикер таким похвастаться может :) стоила фишка 2 часа беспрерывной и глубокой Мысли
 
системным администраторам и просто интересующимся реестром советую эту книгу



качественный и грамотный текст
 
свершилось! совершенно случайно узнал о работе с командной строкой с помощью Visual Basic!
это, это ....... просто слов нет, какие открываются перспективы! эмоции уже часа три льют через край, все не дождусь момента быстрее сесть и кодить дальше :)
появится возможность автоматизированной отправки письма автору с открытием аутлука и заданным почтовым адресом в строке, открытие любой административной оснастки, работа с GPO, настройка брандмауэра Windows. Да даже тупо трейсрутить адрес с записью лога в заданный файл! и это лишь приятные мелочи и побрякушки на фоне поистине гигантских перспектив. С некоторым сожалением смотрю на образцы вырезок кода из прошлых проектов - а ведь все можно было сделать гораздо проще ....... не прибегая к методикам проктолога
 
VipeR
такое ощущение, что ты открыл для себя исходный код винды.. :D
 
да я вообще прыгаю от радости и буду еще дня три ходить с немного потерянным и загадочно улыбающимся видом!
можно писать целые скрипты любой сложности с преобразованием в код VB, а это - золотая кладезь! на контроллере домена можно целые политики в сети распространять с помощью простого сбитого своими же руками гуя! управлять процессами. Винды можно поставить в любую позу, кроме как раком. Раком она и сама встает
чувствую себя 10-летним ребенком, которому подарили хоть и игрушечный, но все же летающий вертолет .......
 
я так же прыгал, когда начинал писать первые игры.. теперь уже не тот.. пыл пропал.. остались заботы..
 
это точно ..... хочется как можно сильнее отдалить наступление периода этих самых "забот" и сделать до этого как можно больше .... набраться опыта везде, где возможно и остаться вменяемым человеком :D

как раз до идеи написания твикера была мысль написать скрипт с настройками ...... машин в конторе пааално, каждую дотошно настраивать - тупизм. Делать образы систем - тоже не вариант, тем более, под каждую мать - свой образ (без пиратства, все до единого байта - лицензия, после заливки полностью готового и настроенного образа делалась мини-установка с активацией по телефону и десятиминутным выслушиванием отвратительного голоса, диктующего цифры в суппорте мелкософта. Хорошо хоть телефон бесплатный :D). Начал писать скрипт, но идея твикера прервала развитие скрипта :D может кому пригодятся несколько команд пакетного файла ....... коменты написал, правда на фиглише:

Код:
rem TimeService configuring
rem =========================================================


rem Windows Firewall Starting
rem =========================================================
net start sharedaccess
reg add "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess" /v start /t reg_dword /d 2 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile" /v DisableNotifications /t reg_dword /d 0 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile" /v DoNotAllowExceptions /t reg_dword /d 0 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile" /v EnableFirewall /t reg_dword /d 1 /f


rem Starting time service "K9NT"
rem =========================================================
copy \\main\remoteinstall\k9nt.exe c:\windows\system32
NET stop w32time
netsh firewall add portopening udp 123 ntp
k9nt add
reg add "HKLM\SYSTEM\CurrentControlSet\Services\w32time" /v start /t reg_dword /d 4 /f


rem Configuring exceptions for Windows FireWall
rem =========================================================

rem Win XP LAN Diagnostics disabling
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List" /v "C:\WINDOWS\Network Diagnostic\xpnetdiag.exe" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\upnphost" /v start /t reg_dword /d 4 /f

rem Disabling u'PnP structure
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List" /v "1900:UDP" /f
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List" /v "2869:TCP" /f

rem Remote Desktop and Radmin registering
netsh firewall add portopening tcp 3389 RDP
netsh firewall add portopening tcp 4899 Radmin

rem Starting shared access to files and folders
reg add "HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver" /v start /t reg_dword /d 2 /f
net start lanmanserver
reg add "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List" /v "137:udp" /t reg_sz /d "137:UDP:LocalSubNet:Enabled:@xpsp2res.dll,-22001" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List" /v "138:udp" /t reg_sz /d "138:UDP:LocalSubNet:Enabled:@xpsp2res.dll,-22002" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List" /v "139:tcp" /t reg_sz /d "139:TCP:LocalSubNet:Enabled:@xpsp2res.dll,-22004" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\GloballyOpenPorts\List" /v "445:tcp" /t reg_sz /d "445:TCP:LocalSubNet:Enabled:@xpsp2res.dll,-22005" /f

rem Disabling security center
net stop wscsvc
reg add "HKLM\SYSTEM\CurrentControlSet\Services\wscsvc" /v start /t reg_dword /d 4 /f

rem Disabling remote helper
net stop RDSessMgr
reg add "HKLM\SYSTEM\CurrentControlSet\Services\RDSessMgr" /v start /t reg_dword /d 4 /f
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List" /v \""%windir%\system32\sessmgr.exe\"" /f
 
VipeR
Правильно говорят - обязательно нужно читать мануалы ;).
VipeR написал(а):
с помощью Visual Basic
Ну не зря же этот язык от дяди Била :), наверняка там заложены и другие фишки для создания приложений дружественных для винды.

А книжка-то Ай, хороша! :)
 
после хорошо удавшихся праздникофф продолжена работа над проектом :)
получены дополнительные знания по работе с Listbox. Дало возможность работать с именами ключей в списках, настраиваю возможность показа в "моем компьютере" иконок быстрого запуска наиболее часто используемых оснасток и приложений .....
после 5-дневного отдыха от программирования, заглянув в сырцы - первая мысль "это что, МОЙ код???? оО"

========= время - обед =========

созданы иконки быстрого запуска
VipeR написал(а):
наиболее часто используемых оснасток и приложений
 
ууухх, в понедельник смотреть в код врагу не пожелаешь ..... доделана и полностью стабильна вкладка "Рабочий стол"
рассматривается поддержка программы различными ОСями ..... скажем, в Windows 2003 Server несколько изменен класс "юзвери" ..... и прочая мелкотня, решаемая. Как-то криво смотрю на идею уведомления в опции насчет того, в какой ОСи она будет работать ...... это что ж получится. Хотя для пользователей программульки это вряд ли будет проблемой ..... кстати, она изначально затачивается под Windows XP, просто некоторые опции в других семействах работать не будут, это нормально ..... например - поддержка режима UDMA-66 в висте уже интегрирована и опции такой в ней нет, хоть убейся
начато проектирование более системных приколюх:



если у вас есть предложения/пожелания, то внимательно их выслушаю :)
 
Программазм крепчает. Смеркалось ........
столкнулся с проблемой извлечения и записью некоторых стрингов в реестр ..... сижу, потею. Чем глубже в реестр, тем больше создается впечатление, что разные его части делали индусы из разных поселков. Стандартно настройка ставится DWORD'ом со значением 0x01 и снимается 0х00. Так неееееет ведь, есть еще и стринги со значениями "yes" / "no" и даже ахтунг в виде "Y" / "N". Без комментариев
п.с. стринги - это не трусы
 
VipeR написал(а):
есть еще и стринги со значениями "yes" / "no" и даже ахтунг в виде "Y" / "N"
А в каких ветках встречаются?
Это я так, для общего развития спросил.

VipeR написал(а):
создается впечатление, что разные его части делали индусы из разных поселков
Ну так это же 4 (надеюсь не ошибаюсь, в 98-ой их всего 2, в 2К - 4) совершенно разных файла, со своей структурой каждый. Наверное с этим и связано такое разнообразие значений ключей.
 
да даже не в том дело, что 4 разных ..... структура изначально была идентична
AlexZir написал(а):
А в каких ветках встречаются?
Это я так, для общего развития спросил
HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\Control\WOW", "DefaultSeparateVDM"
HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug", "Auto"
HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction", "Enable"
 
VipeR написал(а):
структура изначально была идентична
Тогда это не те индусы виноваты, а другие, которые различную обвязку под винду пишут (драйверы, утилиты и т.д.) Обычно эти проги лишние записи в реестр кидают.
VipeR написал(а):
отладчик
VipeR написал(а):
дефрагментатор вроде бы
 
VipeR написал(а):
оптимизация загрузочных файлов
Windows автоматически оптимизирует локацию бут-файлегов. Оптимизция автоматически производится при простое системы в 10 минут, уменьшается время загрузки (хоть и незначительно) ..... по большому счету это и есть дефрагментация загрузочного сектора

VipeR написал(а):
сия опция позволяет запускать архидревние 16-битные приложения в раздельной области памяти. В теории на не менее архидревних машинах позволяет несколько управлять быстродействием

VipeR написал(а):
отключает гребаный Dr. Watson
 
Назад
Сверху