Поддавшись случившейся не так давно в Интернете истерии по поводу выхода первой публичной беты Windows 7, скачал себе 64-разрядную версию и на некоторое время пропал в ней. :) Это было мое первое знакомство с 64-разрядной операционной системой (не говоря уже о Windows 7), хотя мой компьютер уже давным-давно поддерживает их. Все установилось и заработало на удивление гладко, за исключением дурацкого 3G модема от билайна (обыкновенный GPRS-модем от мегафона даже нисколечко не сопротивлялся). Возможно, Microsoft более серьезно подошла к разработке своей новой операционки, а возможно рассказы о проблемах 64-битных систем оказали такими же «сказками на ночь», как и большинство сказок про Vista. Мне почему-то кажется что второе. :)
Но это не очередной хвалебный пост в пользу Microsoft, так что на этом закругляюсь. Остановлюсь только на работе Delphi в Windows 7. Delphi 2009 устанавливается и работает без проблем – так как ей и положено. Про Delphi 7 пока ничего толком сказать не могу, поскольку еще не устанавливал ее, но мне кажется, что также проблем не будет.
Удивительно, но весь негатив сопутствующий появлению Windows Vista, превратился в позитивные настроения всей «экосистемы» (как это называет Microsoft) перед выходом Windows 7. Это касается Delphi-сообщества, вот например Daniel Wischnewski уже создал прототип нескольких компонентов, позволяющих уже сейчас добавлять в приложения поддержку новых возможностей Windows 7 (в первую очередь визуальных).
Естественно, что все эти новые возможности будут работать только в Windows 7. И еще важное замечание. Хотя у компонентов и присутствует инсталлятор, он просто копирует необходимые файлы, устанавливать их придется вручную.
Спасибо за пост!
ОтветитьУдалитьустанови delphi 7 и воспользуйся отладчиком.... посмотрим что тогда скажешь )
ОтветитьУдалить2Анонимный,
ОтветитьУдалитьне понял сарказма ... :)
Хотя сам давным давно не пользуюсь этой версией, все же установил и протестировал. При запуске выдается предупреждение, что существуют проблемы совместимости - так же как это раньше было в Vista. Однако больших проблем, явно бросающихся в глаза, я не обнаружил. Отладчик так же работает стабильно.
хм хм... мне сначала тоже показалось, что дельфи 2009 работает, но вот этот код:
ОтветитьУдалитьRegOpenKey(HKEY_LOCAL_MACHINE,'\SOFTWARE\', mkey);
RegEnumKey(mkey, 0, reg_str, 255);
memo1.Lines.Add(reg_str);
который, вроде бы, должен выдать первый подраздел hklm/software, выдает первый подраздел HKEY_Current_user. Кроме того, в HKCU создается пустой раздел с названием из какого-то символа юникода и не читаются полностью другие ветви реестра, в частности, HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX. С реестром, судя по всему, проблемы... с делфи 7 аналогично. Ни у кого похожего не наблюдалось?
бегло глянул ... у меня этот код вообще под Win7 не запустился - выдал многозначительную ошибку Access Violation at address 00000000, чуть позже еще разок взляну - более пристально
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьпроблема, возможно, в кодировках, используемых компилятором... Валерий, Вы на каком билде пробовали? сейчас попробую обновиться до 7100.
ОтветитьУдалитьЯ пробовал на публичной beta-версии, точно не помню ее билд - 7000 по-моему.
ОтветитьУдалитьНе понял только про кодировки ...
кодировки - возможно, неправильно записываются символы прямого и обратного слешей. насколько я помню, еще раздел создавался с именем "Microsoft\Windows\CurrentVersion\GameUX".
ОтветитьУдалитьP. S. билд 7100 - проблемы аналогичные. Работа с реестром - нивкакую... может, дело в изменившихся константах типа HKEY?
Сомневаюсь насчет кодировок.
ОтветитьУдалитьА вот проблема с правами - запросто. Поскольку по-умолчанию ни в Висте ни в семерке доступ в раздел HKEY_LOCAL_MACHINE имеют только привелигерованные пользователи. Обычный пользователь имеет доступ только в HKEY_CURRENT_USER. Возможно из-за этого и такие проблемы?
Попробуйте к разделу CURRENT_USER обращаться. У меня просто нет возможности сейчас проверить.
Валерий, спасибо, действительно помогло) соотвественно, вопрос: можно ли получить соответсвующие права доступа?)
ОтветитьУдалитьПо всей видимости проблема с правами вызвана включенным UAC. В моем предыдущем посте есть способ как его правильно настроить в приложении. Ну или в качестве проверки можно временно выключить его.
ОтветитьУдалитьНо думаю следует задуматься вот над каким вопросом: настолько ли критично записывать именно в HKLM, чтобы полностью гонять приложение с правами администратора? или заморачиваться с COM только ради этого?
Вот всегда так... начнуть вопить: "MS отстой, да ничё не работает", а сами даже обработку ошибок в код вставить не удосужатся...
ОтветитьУдалить2GunSmoker: ошибок, как таковых, не происходит. При запросе из HKLM выдаются данные из HKCU. И уж тем более я не говорил подобное "MS отстой, да ничё не работает"
ОтветитьУдалитьВалерий, критично. Пишу программу для редактирования и добавления игр в game explorer.
Попробую SetFileSecurity()
UAC, кстати, выключен
ОтветитьУдалитьДобавление манифеста запуска от администратора в приложение ни к чему не привело. Права на ветвь реестра выставлены. Пойду на форумы выяснять..
ОтветитьУдалитьДа, кстати, попробовал запустить программу, скомпилированную под 7, по хр - не работает! значит, дело в компиляторе.
ОтветитьУдалитьвсё, нашел, если кому интересно:
ОтветитьУдалитьРабота с 64битным реестром
[code delphi]
procedure TForm1.FormCreate(Sender: TObject);
const
KEY_WOW64_32KEY = $200;
KEY_WOW64_64KEY = $100;
var
org:tregistryEx;
key: HKEY;
begin
org:=tregistryEx.Create;
org.RootKey:=HKEY_LOCAL_MACHINE;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows NT\CurrentVersion',
0, KEY_ALL_ACCESS or KEY_WOW64_64KEY, key);
org.SetCurrentKey(key);
Edit1.Text:=org.ReadString('RegisteredOwner');
Edit2.Text:=org.ReadString('RegisteredOrganization');
[/code]
Вот именно что - Windows 64х битная, а то сразу компилятор ругать. :) А 64х битный компилятор мы наверное только к пенсии дождемся :(
ОтветитьУдалитьКстати вчера экспериментировал - иммено к этому ключу доступа небыло, даже HKLM\...\CurrentVersion\Run удалось прочитать.
компилятор я не ругал, просто он не рассчитан на подобное) винда вообще при первом запуске предупреждала, что эта программа несовместима)
ОтветитьУдалитьНарод, ИМХО не стоит так извращаться. Уж если писать проги под Вынь 7 то лучше ставить заточенную под неё среду. Ибо Delphi 7 хотя и крут, морально устарел для этой ОС.
ОтветитьУдалитьВсе хорошо конечно, но - на Windows 7 в Делфи не получается регулировать громкость на компьютере((( Походу тоже что-то из-за доступа((( Подскажите как выйти из ситуации?
ОтветитьУдалитьГде достать Windows 7 Controls for Delphi? По ссылке не скачивается
ОтветитьУдалитьDelphi 5 + Win 7 (под Админом)
ОтветитьУдалитьПри попытке залезть в опции проекта:
Project >> Options...
Получаем стандартное:
Error
Access violation at address ########.
Write of address ########.
Вопрос чёй-то так? Мигрировать с D5 желания нет, но есть проблема, под этот комп нет дров для XP...
Как бы это победить?
Дрова надо правильно искать. Берётся AIDA или EVEREST и по ID железки ищется драйвер. Некоторую проблему представляют ноутбучные вебкамеры и звуковые карты. Ну и неплохо перед инсталляцией дельфи поудалять все системные DLL из комлекта поставки - тогда и проблем совместимости небудет. Кроме того в семёрку встроен виртуалпц - можно и экспу поставить или 98.
ОтветитьУдалить