Форум по 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  
Старый 11.01.2013, 13:51
my33oh my33oh вне форума
Новичок
 
Регистрация: 17.12.2012
Сообщения: 93
Репутация: -579
По умолчанию

Цитата:
Сообщение от icWasya
В него пишут всякие COM - сервера при регистрации
ключевое слово всякие, нормальные пишут куда положено
Ответить с цитированием
  #9  
Старый 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... А самое парадоксальное - презентация состоялась в Минске...
Ответить с цитированием
  #10  
Старый 12.01.2013, 02:37
UFO 007 UFO 007 вне форума
Новичок
 
Регистрация: 28.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

Цитата:
Сообщение от icWasya
по поводу HKEY_CLASSES_ROOT - в него не пишут, его читают, запомни и другим расскажи
В него пишут всякие COM - сервера при регистрации
Слыш - чо, прохожие: я хочу всего лишь переместиь всю папку (вместе с реестром) с SSDшника на магнитные Блины(ХДД) без ущерба для ОСи - блин: точно не по адресу обратился (пусть лучше ОСьЗоновцы подскажут, а на Его Высочество Pascal как-нить сам интерпретирую)...

Модер/Админ - тема закрыта!!!

Пы Сы:= Всем == Спасибо

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

Последний раз редактировалось UFO 007, 12.01.2013 в 02:41.
Ответить с цитированием
  #11  
Старый 12.01.2013, 03:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Вообще-то, перенос папки My Documents производится средствами самой винды, впрочем, как и всего профиля, если не ошибаюсь. И тогда системные функции работают правильно. И без всяких "ручных" правок реестра.

Отвечая на второй вопрос - чем собрать 64-битное приложение на Дельфи. Сейчас есть только 2 варианта: Delphi XE2 и Delphi XE3 (редакции строго выше Starter).

Предупреждая следующий попрос - ссылку где скачать не дам (запрещено правилами). А триал можно скачать с оф. сайта. В принципе, ничто не мещает, кроме совести, поставить его под виртуалкой и просто переставлять по мере протухания.
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо lmikle за это полезное сообщение:
OTVET (18.01.2013), UFO 007 (13.01.2013)
  #12  
Старый 12.01.2013, 03:38
UFO 007 UFO 007 вне форума
Новичок
 
Регистрация: 28.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Вообще-то, перенос папки My Documents производится средствами самой винды, впрочем, как и всего профиля, если не ошибаюсь. И тогда системные функции работают правильно. И без всяких "ручных" правок реестра.
А папку C:\Docume~1\тыры-пыры\temp => ещё проще (при чём - на Паскале)

Цитата:
Сообщение от lmikle
Отвечая на второй вопрос - чем собрать 64-битное приложение на Дельфи. Сейчас есть только 2 варианта: Delphi XE2 и Delphi XE3 (редакции строго выше Starter).
Зер Гроссе Данке Щён, мил человек (ет в принципе - то, что что я ждал после опробывания Лазаря)

Цитата:
Сообщение от lmikle
Предупреждая следующий попрос - ссылку где скачать не дам (запрещено правилами). ....
А для оных целей сущ. DC++(без всяких регистраций, тел. номеров и СМС - забиваешь в поиск - находишь и Чо "пожирней" - скачиваешь... - Спс...
__________________
...И был сначала ZX-Spectrum, а потом его T(urbo)ASS(e)M(bler)... И только на 7-й день (когда Интел купила Пентковского [из КБ Бабаяна]) - появился Pentium-I... А в Союзе P-II был ещё в 1978 году (точнее: Эльбрус [мультискалярный проц] только не рапространялся спекулянтами, а управлял ракетами и спутниками)... А лет с пяток назад Эльбрус-II ПЁР (но никак не ГНАЛСЯ как Селероны) на F(recuency):= 400 GHz... А самое парадоксальное - презентация состоялась в Минске...
Ответить с цитированием
  #13  
Старый 12.01.2013, 04:55
UFO 007 UFO 007 вне форума
Новичок
 
Регистрация: 28.11.2010
Сообщения: 54
Репутация: 10
Лампочка

Не-е-е-е, Ребят, я ж - не Изверг Иудейский...
Как тОКМА обкатаю код и ежелить чей-то ФлэшВинт будет задыхаться - исходники в массы...
__________________
...И был сначала ZX-Spectrum, а потом его T(urbo)ASS(e)M(bler)... И только на 7-й день (когда Интел купила Пентковского [из КБ Бабаяна]) - появился Pentium-I... А в Союзе P-II был ещё в 1978 году (точнее: Эльбрус [мультискалярный проц] только не рапространялся спекулянтами, а управлял ракетами и спутниками)... А лет с пяток назад Эльбрус-II ПЁР (но никак не ГНАЛСЯ как Селероны) на F(recuency):= 400 GHz... А самое парадоксальное - презентация состоялась в Минске...
Ответить с цитированием
  #14  
Старый 12.01.2013, 13:06
my33oh my33oh вне форума
Новичок
 
Регистрация: 17.12.2012
Сообщения: 93
Репутация: -579
По умолчанию

Цитата:
Сообщение от UFO 007
и телепатия твоя тоже подводит - ты не читал исходник RegistryChecker'a, ...... тут у меня вопрос к общественности: - КАК УЗНАТЬ Т_О_Ч_Н_О_Е количество ключей(а так же параметров_всех ключей), удовлетворяющих:='C:\Docu...And Set...s' //разумеется в регистри
телепатия меня никогда не подводит ибо KEY_WOW64_64KEY=$0100 всетаки используется в твоем "примере"
а чтобы все получалось надо прислушиваца к советам, а не нести всякую мутотень коверкая слова которуя даже читать никто не станет, на любом форуме
хотя на киберфоруме твои посты почемуто чуть более литературны, видимо там ты читал правила при регистрации...

Последний раз редактировалось my33oh, 12.01.2013 в 13:29.
Ответить с цитированием
  #15  
Старый 13.01.2013, 00:24
UFO 007 UFO 007 вне форума
Новичок
 
Регистрация: 28.11.2010
Сообщения: 54
Репутация: 10
Вопрос

Цитата:
Сообщение от lmikle
... 2 варианта: Delphi XE2 и Delphi XE3 (редакции строго выше Starter).
Поставил ХЕ3 ->Help\About Embarcadero Delphi -> ниже Product License Status стоит Architect (это из той оперы про Starter?) и если это - то, что нуно, то какие настройки поменять (а то после D7 столько "фишек" - аж жутковато) чтобы в ТаскМанагере после Проект1.ехе исчез постфикс *32?
__________________
...И был сначала 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, время: 13:39.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter