|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
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" Нууу!!! - думаю: я его Щааа Код:
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; Код:
Reg64:= TRegistry.Create(KEY_ALL_ACCESS OR $0100); 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
|
|||
|
|||
Код:
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. Заранее благодарен за любую подсказку (для апонятья). (Есть подозрение, что вопрос не совсем по адресу и мож следует обратиться к спецам ИМЕННО по Винде типа ОСьЗона.нет и проплагиатить этот материал там, но боюсь, что тамошние Гуру на Паскале "... ни в дугу и ни в тую...") ...И был сначала 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
|
|||
|
|||
А это будет сильно большой ошибкой, если между строками 148 и 149 не хватает
Код:
reg.RootKey:= HKEY_CLASSES_ROOT; ...И был сначала 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
|
|||
|
|||
"Подозреваю" что это было ОЧЕНЬ большой ошибкой - подправил и теперь статистика такова :
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
|
|||
|
|||
Огромное всем спибо!!! (понимаю - все празднуют/отдыхают...) А где тут кнопочка [Решено]?
Как оказалось - целый кобель (а не собака) зарыт в самой среде разработки. Хватило движок от 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; Люди добрыи-и-и!!! Да поможить за христарадь - обозначьте версию/сборку/модель/модификацию 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
|
|||
|
|||
честно говоря весь этот твой эмоциональный высер я так и не осилил ...
но моя телепатия подсказывает что тебе нехватает KEY_WOW64_64KEY а по поводу HKEY_CLASSES_ROOT - в него не пишут, его читают, запомни и другим расскажи |
#7
|
|||
|
|||
по поводу HKEY_CLASSES_ROOT - в него не пишут, его читают, запомни и другим расскажи
В него пишут всякие COM - сервера при регистрации |
#8
|
|||
|
|||
Цитата:
Цитата:
Цитата:
ЗЫ. НЕСловесный понос тебе понятен? ...И был сначала ZX-Spectrum, а потом его T(urbo)ASS(e)M(bler)... И только на 7-й день (когда Интел купила Пентковского [из КБ Бабаяна]) - появился Pentium-I... А в Союзе P-II был ещё в 1978 году (точнее: Эльбрус [мультискалярный проц] только не рапространялся спекулянтами, а управлял ракетами и спутниками)... А лет с пяток назад Эльбрус-II ПЁР (но никак не ГНАЛСЯ как Селероны) на F(recuency):= 400 GHz... А самое парадоксальное - презентация состоялась в Минске... |