Форум по 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)
  #2  
Старый 05.01.2013, 22:33
UFO 007 UFO 007 вне форума
Новичок
 
Регистрация: 28.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Graphics, Dialogs, StdCtrls, Registry;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

CurDir: string;
KeyCount, Found, NotFound: integer;
Reg, Reg64: TRegistry;

implementation

{$R *.lfm}

{ TForm1 }


procedure TForm1.Button1Click(Sender: TObject);
procedure RegScan(Key, Search: string);
var
  tskey, tsval: TStrings;
  i,j: integer;
begin//1     
  inc(KeyCount);
  Edit2.Text:= 'KeyCount= '+inttostr(KeyCount);
  application.ProcessMessages;
  tskey:= TStringList.Create;
  tsval:= TStringList.Create;
  If Not Reg64.OpenKey(key, false)Then
  begin//2 if
Memo3.Lines.Add('нет такого ключа '+ key);
    If Reg.OpenKey(key, false)// .aif
    Then //если существ (открылся) имя = ''
    begin//3
      reg.GetKeyNames(tskey);//из ''->[0]=*;[1]=.386;[2]=.7z;[3]=.aca;...
      reg.GetValueNames(tsval);//получаем и
      for j:= 0 to tsval.Count - 1 do //просматриваем все параметры
      begin//4 j
        if Reg.GetDataType(tsval.Strings[j]) in [rdString, rdExpandString] then
        If (Pos(Search, tsval.Strings[j]) > 0) Or
        (Pos(Search, Reg.ReadString(tsval.Strings[j])) > 0)
        Then
        begin//5 if
          Inc(found);
Memo2.Lines.Add(inttostr(KeyCount)+'j= '+Reg.ReadString(tsval.Strings[j]));
Memo1.Lines.Add(inttostr(KeyCount)+'key= '+key);
Edit1.Text:= inttostr(found);
        end;//5 if
      end;//4 j  все парамктры проверены
    end Else//3 если не существ Reg32 = ''
Memo3.Lines.Add('и 32-ого тоже '+ key);
    Reg.CloseKey;
    tsval.Clear;
    for i:= 0 to tskey.Count - 1 do
    begin//3 i
      Reg.OpenKey(tskey.Strings[i], false);
      reg.GetValueNames(tsval);//получаем и
      Reg.CloseKey;
      for j:= 0 to tsval.Count - 1 do //просматриваем все параметры
      begin//4 j
        if Reg.GetDataType(tsval.Strings[j]) in [rdString, rdExpandString] then
        If Pos(Search, Reg.ReadString(tsval.Strings[j])) > 0 Then
        begin//5 if
          Inc(found);
Memo2.Lines.Add(inttostr(KeyCount)+'i= '+Reg.ReadString(tsval.Strings[j]));
Memo2.Lines.Add('');
Memo1.Lines.Add(inttostr(KeyCount)+tskey.Strings[i]);
Edit1.Text:= inttostr(found);
        end;//5  if
      end;//4 j
Edit1.Text:= inttostr(found);
      RegScan(Key + '\' + tskey.Strings[i], Search);
    end;//3 i
Inc(NotFound);
Edit3.Text:=inttostr(NotFound);
  end//2 if
  Else
  begin//2
      reg64.GetKeyNames(tskey);//1-open... 2-open... 3-persyst...
      reg64.GetValueNames(tsval);
      for j:= 0 to tsval.Count - 1 do
      begin//3 j
        if Reg64.GetDataType(tsval.Strings[j]) in [rdString, rdExpandString] then
        If (Pos(Search, tsval.Strings[j]) > 0) Or
        (Pos(Search, Reg64.ReadString(tsval.Strings[j])) > 0)
        Then
        begin//4 if
          Inc(found);
  Memo2.Lines.Add(inttostr(KeyCount)+'j= '+Reg64.ReadString(tsval.Strings[j]));
  Memo1.Lines.Add(inttostr(KeyCount)+'key= '+key);
  Edit1.Text:= inttostr(found);
        end;//4 if
      end;//3 j
      Reg64.CloseKey;
      tsval.Clear;
      for i:= 0 to tskey.Count - 1 do
      begin//3 i
        Reg64.OpenKey(tskey.Strings[i], false);
        reg64.GetValueNames(tsval);
        Reg64.CloseKey;
        for j:= 0 to tsval.Count - 1 do
        begin//4 j
          if Reg64.GetDataType(tsval.Strings[j]) in [rdString, rdExpandString] then
          If Pos(Search, Reg64.ReadString(tsval.Strings[j])) > 0 Then
          begin//5 if
            Inc(found);
  Memo2.Lines.Add(inttostr(KeyCount)+'i= '+Reg64.ReadString(tsval.Strings[j]));
  Memo2.Lines.Add('');
  Memo1.Lines.Add(inttostr(KeyCount)+tskey.Strings[i]);
  Edit1.Text:= inttostr(found);
          end;//5 if
        end;//4 j
  Edit1.Text:= inttostr(found);
    RegScan(Key + '\' + tskey.Strings[i], Search);
      end;//3 i
    end;//2 i
//Memo2.Lines.Add(inttostr(tsval.Count));
//Memo1.Lines.Add(ts[5]);
end;//1 RegScan

begin
  reg64.RootKey:= HKEY_CLASSES_ROOT;
  RegScan('', 'C:\Documents and Settings');
{  RegScan(
   'Installer\Products\4EA42A62D9304AC4784BF238120683FF', 'C:\Documents and Settings');
}   reg.RootKey:= HKEY_CURRENT_USER;
   RegScan('', 'C:\Documents and Settings');
   reg.RootKey:= HKEY_LOCAL_MACHINE;
   RegScan('', 'C:\Documents and Settings');
   reg.RootKey:= HKEY_USERS;
   RegScan('', 'C:\Documents and Settings');
   reg.RootKey:= HKEY_CURRENT_CONFIG;
   RegScan('', 'C:\Documents and Settings');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    Application.Title:= 'UFO'+'''s To SSD Optimizator';
  CurDir:= ExtractFilePath(Application.ExeName);
  Reg:= TRegistry.Create(KEY_ALL_ACCESS);
  Reg64:= TRegistry.Create(KEY_ALL_ACCESS OR $0100);
  memo1.Clear;
  memo2.Clear;

end;

end.
обнаруживает 180 значений (а мож это ещё не все - как узнать?) по сравнению с 85-ю (от движка RegistryCheckerа на Рег(х32)) KeyCount Лазаря составил 811980 ключей и параметров (в среднем по 2 с копеечками Кб текста на значение) из которых 2265 не найдено. Тут значение например "\Wow6432Node\Wow6432Node\TypeLib\{D27CDB6B-AE6D-11CF-96B8-444553540000}" и пресловутый РегЕдит не найдёт... Вот тут (когда бубен совсем порвался - отдыхает) и вырастает ВОПРОС № ДВА (мож даже серия): откуда на вход RegScan попадают такие "ключи"? и как узнать точна ли цифра 811980 (это фактическое кол-во ключей и параметров в реестре? мож их там больше (или мерьше)?).

Заранее благодарен за любую подсказку (для апонятья).

(Есть подозрение, что вопрос не совсем по адресу и мож следует обратиться к спецам ИМЕННО по Винде типа ОСьЗона.нет и проплагиатить этот материал там, но боюсь, что тамошние Гуру на Паскале "... ни в дугу и ни в тую...")
__________________
...И был сначала 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)
  #3  
Старый 06.01.2013, 03:13
UFO 007 UFO 007 вне форума
Новичок
 
Регистрация: 28.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

А это будет сильно большой ошибкой, если между строками 148 и 149 не хватает
Код:
reg.RootKey:= HKEY_CLASSES_ROOT;
ну и так для всех веток... ток для остальных надо добавить Reg64. ...
__________________
...И был сначала ZX-Spectrum, а потом его T(urbo)ASS(e)M(bler)... И только на 7-й день (когда Интел купила Пентковского [из КБ Бабаяна]) - появился Pentium-I... А в Союзе P-II был ещё в 1978 году (точнее: Эльбрус [мультискалярный проц] только не рапространялся спекулянтами, а управлял ракетами и спутниками)... А лет с пяток назад Эльбрус-II ПЁР (но никак не ГНАЛСЯ как Селероны) на F(recuency):= 400 GHz... А самое парадоксальное - презентация состоялась в Минске...

Последний раз редактировалось UFO 007, 06.01.2013 в 03:18.
Ответить с цитированием
  #4  
Старый 06.01.2013, 03:51
UFO 007 UFO 007 вне форума
Новичок
 
Регистрация: 28.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

"Подозреваю" что это было ОЧЕНЬ большой ошибкой - подправил и теперь статистика такова :

KeyCount упал с 811980 до 560475 (NotFound Тоже упало с 2265 до 632, но не исчезло совсем!!! - как всё же побороть этот Рефлекшн? мож Рег64му ЫшО какой флаг задрать?) а кол-во найденых значений подпрыгнуло со 180 аж до 609
__________________
...И был сначала ZX-Spectrum, а потом его T(urbo)ASS(e)M(bler)... И только на 7-й день (когда Интел купила Пентковского [из КБ Бабаяна]) - появился Pentium-I... А в Союзе P-II был ещё в 1978 году (точнее: Эльбрус [мультискалярный проц] только не рапространялся спекулянтами, а управлял ракетами и спутниками)... А лет с пяток назад Эльбрус-II ПЁР (но никак не ГНАЛСЯ как Селероны) на F(recuency):= 400 GHz... А самое парадоксальное - презентация состоялась в Минске...

Последний раз редактировалось UFO 007, 06.01.2013 в 13:00.
Ответить с цитированием
  #5  
Старый 06.01.2013, 18:42
UFO 007 UFO 007 вне форума
Новичок
 
Регистрация: 28.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

Огромное всем спибо!!! (понимаю - все празднуют/отдыхают...) А где тут кнопочка [Решено]?
Как оказалось - целый кобель (а не собака) зарыт в самой среде разработки. Хватило движок от RegistryChecker_а приблизительно следующего содержания:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  TS: TStrings;
begin
  TS:= TStringList.Create;
  Reg:= TRegistry.Create;
  If FileExists(GetEnvironmentVariable('SYSTEMDRIVE')+'\SSD_User.dat') Then
  TS.LoadFromFile(GetEnvironmentVariable('SYSTEMDRIVE')+'\SSD_User.dat');
  Old:= TS.Strings[0];// C:\Documents and Settings
  New:= TS.Strings[1];//E:\Профиль UFO 007(miniXP)
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Reg.RootKey:= HKEY_CLASSES_ROOT;
Form1.Memo1.Lines.Add('HKEY_CLASSES_ROOT');
  Scan('', Old);
  MessageBox('Готово!', 'Сообщение', MB_ICONQUESTION + MB_YESNO);
end;

procedure TForm1.Scan(Key, Search: string);
var
  TSVal, TSKey: TStringList;
  I: Integer;
begin
  Inc(Total);
  TotalEdit.Text:=inttostr(Total);
  Application.ProcessMessages;
  if Reg.OpenKey(Key, False) then //открываем ключ
  try
    TSVal := TStringList.Create;
    TSKey := TStringList.Create;
    try
      Reg.GetValueNames(TSVal);//получаем список параметров ключа
      for I := 0 to TSVal.Count - 1 do// и просматриваем их
      begin
//Form1.Memo2.Lines.Add('RegKey= '+Key);
        if Reg.GetDataType(TSVal.Strings[i]) in [rdString, rdExpandString] then
        If Pos(AnsiUpperCase(Old), AnsiUpperCase(Reg.ReadString(TSVal.Strings[i])))>0
        Then    //значение параметра ключа
        begin
          Inc(Found);
          Form1.FoundEdit.Text:= inttostr(Found);
          if Reg.GetDataType(TSVal.Strings[i]) in [rdExpandString] then
          begin
Form1.Memo1.Lines.Add('      rdExpandString');
Form1.Memo1.Lines.Add('RegKey= '+Key);
Form1.Memo1.Lines.Add('Parametr= '+TSVal.Strings[i]);
Form1.Memo1.Lines.Add('OldData= '+Reg.ReadString(TSVal.Strings[i]));
//            RegValChange(Key, TSVal.Strings[i], New, True);
          end Else
          begin
Form1.Memo1.Lines.Add('      rdString');
Form1.Memo1.Lines.Add('RegKey= '+Key);
Form1.Memo1.Lines.Add('Parametr= '+TSVal.Strings[i]);
Form1.Memo1.Lines.Add('OldData= '+Reg.ReadString(TSVal.Strings[i]));
//            RegValChange(Key, TSVal.Strings[i], New, False);
          end;
        end;
        TSKey.Clear;
      end;
      TSKey.Clear;
      Reg.GetKeyNames(TSKey);
      for I := 0 to TSKey.Count - 1 do
        if TSKey.Strings[i] <> '' then
        begin
          if Reg.GetDataType('') in [rdString, rdExpandString] then//значение ключа
          If Pos(AnsiUpperCase(Old), AnsiUpperCase(Reg.ReadString('')))>0
          Then
          begin
            Inc(Found);
            Form1.FoundEdit.Text:= inttostr(Found);
            if Reg.GetDataType('') in [rdExpandString] then
            begin
Form1.Memo1.Lines.Add('      rdExpandString');
Form1.Memo1.Lines.Add('RegKey= '+Key);
Form1.Memo1.Lines.Add('SubKey''= '+TSKey.Strings[i]);
Form1.Memo1.Lines.Add('OldData= '+Reg.ReadString(''));
//              RegValChange(Key, '', New, True);
            end Else
            begin
Form1.Memo1.Lines.Add('      rdString');
Form1.Memo1.Lines.Add('RegKey= '+Key);
Form1.Memo1.Lines.Add('SubKey''= '+TSKey.Strings[i]);
Form1.Memo1.Lines.Add('OldData= '+Reg.ReadString(''));
//              RegValChange(Key, '', New, False);
            end;
          end;
        Scan(Key + '\' + TSKey.Strings[i], Old);
        end;
      finally
      TSVal.Free;
      TSKey.Free;
    end;
    finally
    Reg.CloseKey;
  end;

end;
собрать/откомпилить не под delphi32.exe (что с постфиксом *32 в таскманагере) а под лазарем (что без оного) и проект1.ехе вывел в ФаундЕдит то же число - сколько раз потребовалось нажать Ф3 в регедите при поиске того же текста в той же ветке пока в тексте статусбара не появился фрагмент "HKEY_CURRENT_USER". Вывод:= Лазарю 5 с плюсом (но только за сборку/компиляцию).

Люди добрыи-и-и!!! Да поможить за христарадь - обозначьте версию/сборку/модель/модификацию Delphi чтоб под 64-й ОСью отображалась без постфикса *32 (что нагуглил д7х64 - чушь собачья и баталия длится уже месяц) а Лазарь - мало того что тот же проект1.ехе 15 метров весит и ШелТриВью бледный, тусклый и тд (ну нету у него ШелИмиджа - диски без иконок и за ДрайвЛеттером метка диска отсутствует) так ещё и если у юзверя в параметре Персональ записано "Е:\Документы_х32", то в ТЕдит (мне) он крякозябры вывел - ну не дружит он с Юникодом...

Заранее благодарен
__________________
...И был сначала ZX-Spectrum, а потом его T(urbo)ASS(e)M(bler)... И только на 7-й день (когда Интел купила Пентковского [из КБ Бабаяна]) - появился Pentium-I... А в Союзе P-II был ещё в 1978 году (точнее: Эльбрус [мультискалярный проц] только не рапространялся спекулянтами, а управлял ракетами и спутниками)... А лет с пяток назад Эльбрус-II ПЁР (но никак не ГНАЛСЯ как Селероны) на F(recuency):= 400 GHz... А самое парадоксальное - презентация состоялась в Минске...

Последний раз редактировалось UFO 007, 06.01.2013 в 18:45.
Ответить с цитированием
Этот пользователь сказал Спасибо UFO 007 за это полезное сообщение:
OTVET (18.01.2013)
  #6  
Старый 11.01.2013, 12:45
my33oh my33oh вне форума
Новичок
 
Регистрация: 17.12.2012
Сообщения: 93
Репутация: -579
По умолчанию

честно говоря весь этот твой эмоциональный высер я так и не осилил ...
но моя телепатия подсказывает что тебе нехватает KEY_WOW64_64KEY
а по поводу HKEY_CLASSES_ROOT - в него не пишут, его читают, запомни и другим расскажи
Ответить с цитированием
  #7  
Старый 11.01.2013, 13:31
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

по поводу HKEY_CLASSES_ROOT - в него не пишут, его читают, запомни и другим расскажи
В него пишут всякие COM - сервера при регистрации
Ответить с цитированием
  #8  
Старый 12.01.2013, 02:26
UFO 007 UFO 007 вне форума
Новичок
 
Регистрация: 28.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

Цитата:
Сообщение от my33oh
честно говоря весь этот твой эмоциональный высер я так и не осилил ...
... -у тебя эмоций недостабельно...
Цитата:
Сообщение от my33oh
но моя телепатия подсказывает что тебе нехватает KEY_WOW64_64KEY
... и телепатия твоя тоже подводит - ты не читал исходник RegistryChecker'a, на котором, ожидая в_аши ответы, я реализовал то-что-мне-нужно (без Lazarusa - он при попытке переименовать 'My Documents' в "Мои Документы" - записывает в реестр ТАкие КРЯКОЗЯБРЫ....) - [тут у меня вопрос к общественности: - КАК УЗНАТЬ Т_О_Ч_Н_О_Е количество ключей(а так же параметров_всех ключей), удовлетворяющих:='C:\Docu...And Set...s' //разумеется в регистри //-если Чо - процедура Scan из RegistryChecker'a насчитывает их 225 штук = это правда??? - пока я НЕ установил Ышо какие-нить проги типа SoundForge или Audition ]
Цитата:
Сообщение от my33oh
а по поводу HKEY_CLASSES_ROOT - в него не пишут, его читают, запомни и другим расскажи :
...Dzen'kue Pan dob'ze - ne potshebno: А ежели я установил прогу, которая воспроизводит - мало того, что Audio 15(#0F) каналов, да Ышо и видео с вертикальным взлётом - она НЕ постесняется занести в вышеупомянутый улей (ветку HKCR) своё Имя:=ключик типа '.ufo007'(наряду с .386, .avi, .exe, и тд и тп)... А раз уж моя прога переносит всю папку 'C:\Docu...And Set...s' на 'E:\Профиль UFO 007\'(вместе с user.dat) - так и все значения в регистри - ОБЯЗАНЫ быть E:\Про... (А ыШО, как сама МелкоСофт рекомендует и C:\Docume~1\... не мешало бы переназначить)

ЗЫ. НЕСловесный понос тебе понятен?
__________________
...И был сначала ZX-Spectrum, а потом его T(urbo)ASS(e)M(bler)... И только на 7-й день (когда Интел купила Пентковского [из КБ Бабаяна]) - появился Pentium-I... А в Союзе P-II был ещё в 1978 году (точнее: Эльбрус [мультискалярный проц] только не рапространялся спекулянтами, а управлял ракетами и спутниками)... А лет с пяток назад Эльбрус-II ПЁР (но никак не ГНАЛСЯ как Селероны) на F(recuency):= 400 GHz... А самое парадоксальное - презентация состоялась в Минске...
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter