Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.01.2013, 22:32
UFO 007 UFO 007 вне форума
Новичок
 
Регистрация: 28.11.2010
Сообщения: 54
Репутация: 10
Вопрос TRegistry64.Create и WOW6432Node

Доброго всем времени суток!!! (Если Вы ещё с нами???)
А тэраз усё с початку (т. е. с начала)...
1-й "Гемор" (рой) начался с уст-ки WinXPx64, а именно:
Выкопал как-то на бескрайних просторах то-ли Гугла, то-ли Тындекса *.reg_файл приблизительно следующего содержания:
Код:
извиняюсь что это не есть код от Его Величества Pascalя - но чтоб Админ про тэги не ругался:
;Добавление в контекстное меню "Мой компьютер" пункта "Диспетчер Устройств"
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Диспетчер Устройств\command]
@="%SystemRoot%\system32\mmc.exe /s %SystemRoot%\system32\devmgmt.msc"

;Добавление в контекстное меню "Мой компьютер" пункта "Редактор Реестра"
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Редактор Реестра\command]
@="Regedit.exe"

;Добавление в контекстное меню "Мой компьютер" пункта "Диспетчер задач"
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Диспетчер Задач\command]
@="taskmgr"

;Добавление в контекстное меню "Мой компьютер" пункта "Установка и удаление программ"
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Установка и Удаление программ\command]
@="control appwiz.cpl"
и прочитав славяноязычные REMарки... - ХОЧУ!!! -> дубльклик по нему -> Добавить данные в реемтр...-> Данные успешно внесены...-> и ... - т и ш и н а... Ну то что пункты не появились в меню - коню понятно: РегЕдит показал, что не то чтобы значения не прописались, а даже вышеуказанные ключи НЕ создались...
Нууу!!! - думаю: я его Щааа
Код:
  Reg:= TRegistry.Create;
  Reg.RootKey:= HKEY_CLASSES_ROOT;
  If Form1.DevMan.Checked Then
  begin // Диспетчер оборудования
    Reg.OpenKey('CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Диспетчер Оборудования\command\', True);
    Reg.WriteExpandString('', '%SystemRoot%\system32\mmc.exe /s %SystemRoot%\system32\devmgmt.msc');
    Reg.CloseKey;
  end;
и... Как ни парадоксально, но опять тишина... Тады эксперименту ради заслал в тот же ключ значение:= UFO 007+999, а РегЕдит выудил это значение там куда его система отрефлектила: в той же ветке(HKCU) и почти том же ключе, но с небольшой вставочкой "WOW6432Node" в районе CLSID - щас уже точно не помню потому что благодаря нагугленному
Код:
  Reg64:= TRegistry.Create(KEY_ALL_ACCESS OR $0100);
и записи в те же ключи ключи тех же значений - О Чудо - все 5 пунктов в меню появились и даже заработали кроме Диспетчера Устройств потому что тот же РегЕдит показал, что хранимое значение после %SystemRoot% не system32 а SysWOW64. Хотя в этой папке и проживает точно такой же файл mmc.exe (и по размеру, и по дате) но пункт меню почему-то не работает пока не поправишь на system32 ручками... И вот отсюда произрастает ВОПРОС № РАЗ: Где тут собака ПОрыЛАСЬ и как енто дело объегорить (тобиш - автоматизировать)?

2-й "Гемор" (рой) начался с приобретения SSD-накопителя, а именно:
Нагуглив инструкций по адаптации Винды к несвойственному для XPюши носителю (ведь родился XPюша в разгар эпохи магнитоблинных ХДДшников и про SSD у него ни малейшего понятия)в целях экономии оставшегося количества циклов записи/чтения решил написать программку (кот. планирую запускать через RunOnceEx дабы Винда не успевала сильно нашкодить с момента установки) которая через тот же Рег64 отключает восстановление системы (для этих дел - есть Акронис), свап-файл (РАМу и так 4Гб), службу индексации (выставить комбинацию битов на шине адреса ФлэшЯчейки и считать нужные данные - это гораздо быстрее, чем искать файл пусть и не по всему диску, а через таблицу индексации, да ещё запозиционировать головки на куазанную дорожку, да дождаться на этой дорожке куазанного сектора - за это время ССДшник успеет не только считать, но и записать файл обратно и я думаю аж дважды а то трижды), службу ЕвентЛог и т. д. и т. п. - согласно инструкции...
Тут всё пучком - никаких гвоздей.
В следующем наблюдении думаю все со мной согласятся: сколько мусора оседает в папках Temp? (+ некоторые интиллигентные проги свой мусор убирают:= лишние (губительные) циклы перезаписи ФлэшЯчеек). А как этого избежать? - естстно папку темп - на магнитные блины (на случай гибели их секторов - есть ХДДРегенератор, а ячейку хоть с бубном, хоть без - всё равно не воскресишь) а дилемму время-деньги я решаю в пользу денег и согласен пожертвовать в этом плане процентом времени (при распаковке какого-нить сэтаппера), но при этом притормозить "счётчик моточасов" ССДшника. Следующая папка: "Твои Тугаменты" со своими ДаунЛоудсами и МайИЗОФайлзами - на те же блины (правда тут без шаманства не обошлось).
Ну вот, наконец, и добрались до танцев с бубнами...
Допустим у Вас есть какие-никакие наработки на С:\ - закладки в Опере, загрузки в МюТорренте, DC++ и т. д. и т. п. И для какого-нить эксКримента надо поставить Винду на Д:\ и... О-Блин - ни закладок, никого... Не вопрос - копируем с Ц на Д все подпапки нужной проги из папки Application Data как Администратора(или Юзера - как ты вошёл в систему) так и Local Settings\Application Data, перезапускаем Оперу и ву-а-ля: все закладки и откр. вкладки последнего сеанса - как будто загружались с С:\... Вот только Опера ЗАПИСЫВАЕТ и ПЕРЕЗАПИСЫВАЕТ копеечные по "весу" mhtшки, coociesы и тд. А сколько ФлэшЯчеек перезатрёт фото , видео или аудио редактор при обработке bmp, avi, wav???
И было решено: всю папку C:\Documents and Settings - на те же блины, но... (вступает бубен):
была нагуглена инфа - вот что рекомендует МелкоСофт:
Чтобы переместить папку Documents and Settings в другое место на диске, выполните следующие действия.
1. ...
6. Выделите и скопируйте в новую папку все папки, кроме содержащей сведения о пользователе, который в данный момент работает в системе.
7. На панели управления дважды щелкните значок Система и перейдите на вкладку [Дополнительно - UFO 007] Профили пользователей.
8. Скопируйте в новую папку профиль текущего пользователя.
9. Нажмите кнопку OК, закройте панель управления, выйдите из системы и повторно войдите в нее с правами администратора.
10. В окне редактора реестра из меню Правка выберите команду Найти.
11. Введите в появившемся диалоговом окне строку documents and settings и нажмите кнопку Найти далее.
12. В каждом разделе, а также имени раздела или параметра реестра, который содержит исходный путь к папке, замените его новым значением. Примечание. Это действие необходимо выполнить для каждого случая вхождения исходного пути. В противном случае компьютер может не запуститься. Необходимо обновить все разделы и параметры реестра.
После перезагрузки компьютера исходную папку Documents and Settings можно удалить.

Партия бубна начинает разгораться уже с 6-го пункта: не удаётся скопировать avgam - нет доступа... закройте (в этом случае антивирус) и повторите попытку... и чем дальше в лес - тем толще партизаны и с LocalService и с NetworkService - с десяток (если не больше) файлов, заблокированных процессами... Вобщем в этом месте думаю навязать и предложить юзеру после ребута выбрать на этом же мультибутабельном диске пункт MiniXP из под которой он скопирует всё без всяких яких (хоть Дос-Навигатором). При загрузке обратно прога встретит его (вторая ссылка в RunOnceEx) с вопросом:"А ткните-ка, голубчик, меня носом - КУДА Вы спрятали папку?" Через ShellTreeView1 получаем новый путь, переходим к 12-му пункту и... партия бубна входит в свой апогей.

Действие Второе: те же и ... небезызвестный RegistryChecker (вернее - позаимствованный и модифицированный движок: procedure Scan(Key, NewPath, OldPath: String) который, найдя в имени или в значении ключа или его параметров OldPath, вызывает RegValChange(ValName, ValData, NewPath_); - делов-то... Налюбовавшись на работу движка на Мемах и ЛистБоксах (все значения вродь правильные - РегЕдит подтверждает), разремировал RegValChange и вперёд - за работу. После обработки:"Делаем Ребут?" - Ноу... и все мои усилия были перечёркнуты первой же найденой РегЕдитом (стало быть пропущенной Scanом) строкой 'C:\Documents and Settings'... Дай-ка - думаю (чтобы бубен не захлёбывался от надрыва) вместо Reg применю Reg64 - значений было найдено вродь столько же (78 - что ли) зато через пару часов KeyCount зашкалил за 3 000 000 (это при весе-то NTUSER.DAT:= 1,8 Мб) и выскочила ощибка "Оут Оф Мемори" (4 Гб - кончились). Пытаясь понять - откуда же прёт такая невезуха, подумал а не от того ли что ТаскМанагер отображает ССД_Оптимизатор.ехе (как и саму Дэлфи32.ехе) с символом *32? Попытки выгуглить Д7х64 оказались тщетными (тут параллельный вопрос - мож хто знае где мона скачать такое чудо?) зато попался х64тый Лазарус (а чем не альтернатива, хоть его продукция раз в 15 и поувесистей? - главно же не мытьём, так катаньем). Наверное именно потому, что как за самим Лазарем, так и за его проджект1.ехе символ *32 отсутствует вот этот код
__________________
...И был сначала ZX-Spectrum, а потом его T(urbo)ASS(e)M(bler)... И только на 7-й день (когда Интел купила Пентковского [из КБ Бабаяна]) - появился Pentium-I... А в Союзе P-II был ещё в 1978 году (точнее: Эльбрус [мультискалярный проц] только не рапространялся спекулянтами, а управлял ракетами и спутниками)... А лет с пяток назад Эльбрус-II ПЁР (но никак не ГНАЛСЯ как Селероны) на F(recuency):= 400 GHz... А самое парадоксальное - презентация состоялась в Минске...
Ответить с цитированием
Этот пользователь сказал Спасибо UFO 007 за это полезное сообщение:
OTVET (18.01.2013)
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:31.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter