Delphi 7 совместимость с windows 10 на windows

AllFree Использовать или нет — вопрос не только религиозных предпочтений. Например у нас проект на BCB6 (размер исходников чуть меньше 3 гиг)… Так вот, тот веселый бородатый мужик из Embarcadero сказал мне удивительную вещь, что смысла портировать под новые среды разработки — нет, это имеет смысл только в том случае, если начат новый проект.
А режим совместимости НЕ НУЖЕН и даже вреден, если работает под текущим.

Kostantin-78
«тут» советуют я (или те, кто натолкнулся на то, что я писал)
Но в этом «тут» подлые мелкомягкие выпилили почти все, что я писал.

Install.cmd запускается из-под админа.
Зачем понадобился Unlocker — мне непонятно.
Если winhlp32.exe не запущен (скрипт этот процесс прибивает первым делом) — языковая обвязка не загружается/
Или у Вас что-то иное захватило файл (например вирус/антивирус)… .
Лайфхак. Важно удалять файловый поток «имяфайла:Zone.Identifier:$DATA» для файлов полученных по сети (ну, или прописывать в этот файл правильную циферку, иначе параноидальный UAC (даже отключенный) может попортить жизнь понизив NTFS права до уровня «Гость». Если удалять лень — входим в свойства файла и жмакаем кнопку «Разблокировать»

Скрипт делает следующее:

0. Если запущена ранее поставленная неправильная справка, то прекращает ее работу

1. Копирует файлы в правильные папки, если винда «из коробки» русскоязычная (нацлокаль ru-ru), то:
winhlp32.exe.mui в папки базовой и «национальной» локали
%SystemRoot%\en-US\winhlp32.exe.mui
и в
%SystemRoot%\ru-RU\winhlp32.exe.mui

winhlp32.exe и ftsrch.dll в %SystemRoot%\
%SystemRoot%\winhlp32.exe
%SystemRoot%\ftsrch.dll

2. Выставляет скопированным файлам NTFS права для текущего пользователя

3. Прописывает реестр согласно разрядности:
x32
ветка HKLM\SOFTWARE\Microsoft\WinHelp
поле AllowProgrammaticMacros тип DWORD значение 1
поле AllowIntranetAccess тип DWORD значение 1
x64
ветка HKLM\SOFTWARE\Microsoft\WinHelp
поле AllowProgrammaticMacros тип DWORD значение 1
поле AllowIntranetAccess тип DWORD значение 1
ветка HKLM\SOFTWARE\Wow6432Node\Microsoft\WinH elp
поле AllowProgrammaticMacros тип DWORD значение 1
поле AllowIntranetAccess тип DWORD значение 1

Вопрос
Имеем следующую проблему: SSO-агент блокирует запуск Delphi на одной из рабочих станций, а именно файлы delphi32.exe и install.exe: при запуске приложений без какого-либо перехвата окон появляется ошибка запуска приложения. Были предприняты следующие действия:
— удаление SSO-агента, результат — ошибка запуска исчезает, приложения запускаются;
— повторная установка SSO-агента, переименование файлов в delphi3232.exe и install123.exe, результат — ошибка запуска исчезает, приложения запускаются;
— переименование файла C:\Program Files (x86)\Indeed-ID\Enterprise SSO\IndeedID.SSO.black.list.dll в C:\Program Files (x86)\Indeed-ID\Enterprise SSO\IndeedID.SSO.black.list1.dll, результат — ошибка запуска исчезает, приложения запускаются.
ОС на рабочей станции: Windows Server 2008 R2 Standard SP1, на рабочей станции с ОС WinXP ситуация не повторяется.
Delphi версии 7

Ответ
Delphi запускается на Win 2008 R2, Win 7 x64 в режиме совместимости.
Для блокирования пользовательских приложений Indeed-Id Enterprise SSO использует механизм AppCertDlls, который позволяет регистрировать dll, которые экспортируют функцию CreateProcessNotify. Она и принимает решение о том, блокировать процесс или нет. В x64 окружении регистрируется 2 такие библиотеки (x86, x64) для блокировки приложений соответствующих типов.
И, при включении одновременно помощника по совместимости и механизма AppCertDlls в случае с Delphi происходит конфликт этих двух механизмов. Скорее всего речь идет о системной ошибке или же недокументированном моменте использования AppCertDlls в данном случае (хотя AppCertDlls сам по себе официально не документируется). Проявляется это следующим образом:
При наличии сколь-нибудь сложного кода (вызовы winapi, stl) в CreateProcessNotify() происходит сбой инициализации и старта процесса. Нашему коду управление не передается вовсе, дело не доходит даже до DllMain().
Если же код тривиален (сравнения и return’ы), то инициализация и старт происходят успешно.
При изменении имени исполняемого файла сигнатура приложения сбивается и ОС не воспринимает его как требующего особого режима совместимости. В этом случае все отрабатывает штатно.
Для проверки были сделаны тестовые AppCertDlls (32 и 64 бита), которые умеют только логгировать вызов своей функции. Результат был получен аналогичный, delphi начинает падать при регистрации в реестре тестовой x86 dll.
Экспортируемые функции описаны правильно, проблем со стеком быть не должно. Даже обойти это со своей стороны мы не можем, нам не передается управление.
Одним из возможных вариантов решения (кроме сбивания сигнатур исполняемых файлов) является ручное отключение SSO AppCertDlls. Сделать это можно в реестре, удалив значения из ключа HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\AppCertDlls

Вопрос
Мы выполнили удаление указанных Вами значений для Indeed-Id из реестра. Ошибка после этого не проявляется, Delphi запускается, но фактически эта операция, насколько я понимаю, аналогична процедуре переименования блэклиста.
Также в одной части объяснения Вы говорите о том, что конфликтует процесс запуска приложения в режиме совместимости и работа SSO-агента (используемого им механизма AppCertDlls), с другой стороны, Вы пишете о том, что SSO-агент не влияет на запуск Delphi.
Кроме того, проблема нерешаема с точки зрения Indeed-Id, так как затрагивает базовые механизмы, на которых основывается работа системы. Таким образом, если я Вас правильно понимаю, мы должны быть готовы к тому, что у всех пользователей, работающих с 64-битными системами, после установки клиентских частей Indeed-Id начнут падать все (или некоторые) приложения, запускаемые в режиме совместимости, и единственным выходом будет отключение блэклиста SSO, хотя SSO-агент не влияет на запуск приложений, приэтом мы не сможем использовать для таких пользователей блокировку запуска нежелательных приложений, так как отключим блэклист для того, чтобы запускались приложения в режиме совместимости. Или я Вас неправильно понимаю?
Также мы проверили запуск Delphi при включенном и отключенном режиме совместимости: результат один и тот же — без дополнительных действий (переименование запускаемых файлов, блэклиста, удаления агента или ключей в реестре) приложение не запускается.

Ответ
SSO-агент не влияет на запуск Delphi с точки зрения своей внутренней функциональности, его код блокировки нежелательных приложений не выполняется при падении и до падения Delphi. Delphi 7 не является приложением, совместимым с ОС Windows 2008 R2 Server и Windows 7, поэтому ОС обрабатывает запуск этого приложения особым образом, основываясь на сигнатуре исполняемого файла.
Я думаю, проблемы могут быть только с приложениями, несовместимыми с теми версиями ОС, которые используются у пользователей и о запуске которых ОС предупреждает особым образом (как и в случае с Delphi). Для запуска подобных приложений при наличии запущенного SSO агента у конечных пользователей можно либо сбивать сигнатуры исполняемых файлов (переименование), либо отключать блокировку запуска нежелательных приложений.

Delphi 7 and windows 10

   

#39758918

Участник

Откуда: Запорожье

Сообщения: 56 486

Рейтинг:
0
/ 0

Есть ли официальная нота, что проги, скомпилированные на д7, работают или не работают на вин-10 и как работают

Рейтинг: 0
/ 0
13.01.2019, 10:52

| Ответить

| Цитировать

| Написать

 

Delphi 7 and windows 10

   

#39758919

andreymx

Участник

Откуда: Запорожье

Сообщения: 56 486

Рейтинг:
0
/ 0

Гуглом искал, но официальных мессаджей не нашёл

Рейтинг: 0
/ 0
13.01.2019, 10:53

| Ответить

| Цитировать

| Написать

 

Delphi 7 and windows 10

   

#39758923

makhaon

Участник

Откуда: A galaxy far far away

Сообщения: 3 972

Рейтинг:
0
/ 0

andreymx,

Официальные меседжи будут про актуальные версии винды и сред. Во время d7, понятно, 10-ки не было еще даже в намеках. Чаще всего в windows совместимость софт вверх существует. Нужно совсем уж какую-то экзотику писать, что бы не работало. Писать, конечно же, нужно с учетом рекомендаций ms и появившегося uac’а и должно работать.

Рейтинг: 0
/ 0
13.01.2019, 11:24

| Ответить

| Цитировать

| Написать

 

Delphi 7 and windows 10

   

#39758933

Softologic

Гость

У меня два сравнительно больших проекта коммерческих, написаны на d7 — оба работают в точности также как и на win7, так и на winXP.

Рейтинг: 0
/ 0
13.01.2019, 12:43

| Ответить

| Цитировать

| Написать

 

Delphi 7 and windows 10

   

#39758934

Softologic

Гость

… В смысле на win10 работают также как и на win7, так и на winXP.

Рейтинг: 0
/ 0
13.01.2019, 12:43

| Ответить

| Цитировать

| Написать

 

Delphi 7 and windows 10

   

#39758937

Andy_OLAP

Участник

Откуда: я знаю, что Хапоэль Беэр-Шева — чемпион

Сообщения: 2 080

Рейтинг:
0
/ 0

andreymxГуглом искал, но официальных мессаджей не нашёл
Потому что искать нужно как Error…Delphi 7 legacy application .

Рейтинг: 0
/ 0
13.01.2019, 13:01

| Ответить

| Цитировать

| Написать

 

Delphi 7 and windows 10

   

#39758938

andreymx

Участник

Откуда: Запорожье

Сообщения: 56 486

Рейтинг:
0
/ 0

Softologic… В смысле на win10 работают также как и на win7, так и на winXP.да у меня тоже работают, делфи с ораклом 11 и фастом старым
Но возникла необходимость официала, если такой имеется

Рейтинг: 0
/ 0
13.01.2019, 13:07

| Ответить

| Цитировать

| Написать

 

Delphi 7 and windows 10

   

#39758942

Фэйтл Эра

Участник

Сообщения: 631

Рейтинг:
0
/ 0

andreymxЕсть ли официальная нота, что проги, скомпилированные на д7, работают или не работают на вин-10 и как работают
А разве есть такие «ноты» хоть для каких-либо систем разработки?
Обычно есть требования к окружению, определяются разработчиком софта (с учетом требований поставщиков используемых библиотек и т.п.). Явно в 2002 никаких Win10 быть не могло и, соответственно, никаких требований по отношению к Win10 появиться не могло.

А «Win10» — это вообще не версия, это череда выпусков под общим названием. Как и WinXP, впрочем.

Рейтинг: 0
/ 0
13.01.2019, 13:36

| Ответить

| Цитировать

| Написать

 

Delphi 7 and windows 10

   

#39758968

Гирлионайльдо

Участник

Сообщения: 430

Рейтинг:
0
/ 0

Фэйтл Эра,

Спасибо кэп, что пояснил за названия. Но имелась введу сама система, а версий данной системы как травы на земле. От выпуска к выпуску. У меня к примеру 10.0.17134 Н/Д построение 17134 а уже есть и новее, а сколько было до ..

Рейтинг: 0
/ 0
13.01.2019, 14:42

| Ответить

| Цитировать

| Написать

 

Delphi 7 and windows 10

   

#39759028

fraks

Участник

Откуда: Новосибирск

Сообщения: 1 961

Рейтинг:
0
/ 0

andreymxЕсть ли официальная нота, что проги, скомпилированные на д7, работают или не работают на вин-10 и как работают

У меня работают.

Есть некоторые несовместимости, типа при format(‘%m’, []) символ валюты теперь юникодный, и не выводится.
Обойти можно парой вариантов — поменять в системе обратно на ‘р.’ как было до этого. Либо например форматировать ‘%.2n’ что бы символ валюты не выводился.

В остальном с проблемами не сталкивался.

Рейтинг: 0
/ 0
13.01.2019, 18:40

| Ответить

| Цитировать

| Написать

 

Здравствуйте админ! На моём ноутбуке установлена Windows 10 и несколько раз в день выходит сообщение: «Oneclickstarter. Программа запущена в режиме совместимости. Настройки совместимости следует отключить, так как они могут приводить к нежелательным последствиям. Тем не менее запустить приложение?» Как избавиться от этого сообщения?

Как отключить режим совместимости Windows 10

Привет друзья! Данное сообщение в Windows 10 появляется из-за программы Tune Up Utilities 2014, так как она не совместима с операционной системой Windows 10, и если нажать на кнопку «Да», то сообщение пропадёт. Чтобы избавиться от этого сообщения и не нажимать постоянно «Да», попробуйте установить новейшую версию этого оптимизатора Windows — AVG PC TuneUp 2016.

Что такое — Режим совместимости Windows?

Данный режим обнаруживает и устраняет проблемы совместимости новейшей операционной системы с устаревшими приложениями, не имеющими драйверов для работы в новой Windows. Другими словами, если какая-либо старенькая программа не совместима с установленной у вас операционной системой Windows 10, но вы всё равно установили эту программу, то Windows 10 запустит её в так называемом режиме совместимости, то есть создаст среду, способствующую запуску этой устаревшей программы.

Хочу сказать, что иногда данный режим работает некорректно и устаревшая программа либо не запускается, либо работает с ошибками, либо выходит окно, как у нашего читателя. В этом случае лучше всего найти самую новую версию нужной вам программы (совместимую с Windows 10) и установить её, а если таковой нет, то можно попробовать то, что один раз сделал я, а именно — отключить режим совместимости Windows 10, в моём случае это помогло, то есть, перестало выходить окно с предупреждением, а устаревшее приложение работало как ни в чём не бывало.

Отключаем режим совместимости Windows 10

Пуск—>Выполнить, введите в поле ввода команду services.mscи нажмите «Ок».

Появляется окно управления службами. Находим службу помощника по совместимости программ. Видим, что служба выполняется.

Правой кнопкой мыши щёлкаем на этой службе и в контекстном списке выбираем «Остановить». 

Служба останавливается. 

Всё, служба помощника по совместимости программ остановлена до следующей перезагрузки.

Полное отключение режима совместимости программ в Windows 10

Для полного отключения режима совместимости программ в Windows 10, щёлкаем правой кнопкой мыши на службе помощника по совместимости программ и в контекстном списке выбираем «Свойства».

Вкладка «Общие», выберите  Тип запуска ставим «Отключена» и жмём «ОК».

«Применить»

«ОК»

Всё, служба помощника по совместимости программ отключена.

Режим совместимости программ Windows 10 позволяет запускать ПО на компьютере, которое нормально работало только в предыдущих версиях Windows, а в последней ОС программа не запускается или работает с ошибками. В этой инструкции о том, как включить режим совместимости с Windows 8, 7, Vista или XP в Windows 10 для исправления ошибок запуска программ.

По умолчанию, Windows 10 после сбоев в программах предлагает автоматически включить режим совместимости, однако только в некоторых из них и не всегда. Ручное же включение режима совместимости, которое раньше (в предыдущих ОС) выполнялось через свойства программы или ее ярлыка, теперь доступно не для всех ярлыков и иногда требуется использовать специальное средство для этого. Рассмотрим оба способа. На сайте также присутствует отдельная инструкция про использование режима совместимости в Windows 11, в которой есть один дополнительный метод — редактор реестра, применимый и для Windows 10.

Включение режима совместимости через свойства программы или ярлыка

Первый способ включить режим совместимости в Windows 10 очень просто — кликните правой кнопкой мыши по ярлыку или исполняемому файлу программы, выберите пункт «Свойства» и откройте, если таковая обнаружится, вкладку «Совместимость».

Настройка совместимости в свойствах программы

Все, что останется сделать — задать параметры режима совместимости: указать версию Windows, в которой программа запускалась без ошибок. При необходимости, включите запуск программы от имени администратора или в режиме меньшего разрешения экрана и пониженной цветности (для совсем старых программ). Затем примените сделанные настройки. В следующий раз программа будет запущена с уже измененными параметрами.

Как включить режим совместимости программ с предыдущими версиями ОС в Windows 10 через устранение неполадок

Чтобы запустить настройку режима совместимости программ, потребуется запустить специальное средство устранения неполадок Windows 10 «Выполнение программ, предназначенных для предыдущих версий Windows».

Сделать это можно либо через пункт панели управления «Устранение неполадок» (панель управления можно открыть через правый клик по кнопке Пуск. Чтобы увидеть пункт «Устранение неполадок» вверху справа в поле «Просмотр» должно стоять «Значки», а не «Категории»), либо, что быстрее, через поиск в панели задач.

Запустится средство устранения проблем с совместимостью старых программ в Windows 10. Имеет смысл использовать пункт «Запуск от имени администратора» при его использовании (это позволит применить параметры к программам, находящимся в папках с ограниченным доступом). Нажмите «Далее».

Устранение неполадок с совместимостью

После некоторого ожидания, в следующем окне будет предложено выбрать программу, с совместимостью которой есть проблемы. Если вам нужно добавить собственную программу (например, в списке не будут отображаться portable-приложения), выберите пункт «Нет в списке» и нажмите «Далее», после чего задайте путь к исполняемому exe файлу программы.

Выбор программы Windows 10

После выбора программы или указания ее расположения, будет предложено выбрать режим диагностики. Для ручного указания режима совместимости с конкретной версией Windows, нажмите «Диагностика программы».

Режим диагностики совместимости

В следующем окне будет предложено указать проблемы, которые были замечены при запуске вашей программы в Windows 10. Выбираем «Программа работала в предыдущих версиях Windows, но не устанавливается или не запускается сейчас» (или другие варианты, по ситуации).

Выбор совместимой версии Windows

В следующем окне потребуется указать, с какой версией ОС включить совместимость — Windows 7, 8, Vista и XP. Выберите свой вариант и нажмите «Далее».

В следующем окне, чтобы завершить установку режима совместимости, требуется нажать «Проверить программу». После ее запуска, проверки (которую вы выполняете сами, необязательно) и закрытия, нажмите «Далее».

Сохранение режима совместимости в Windows 10

И, в завершение, либо сохраните параметры совместимости для этой программы, либо используйте второй пункт, если ошибки остались — «Нет, попытаться использовать другие параметры». Готово, после сохранения параметров программа будет работать в Windows 10 в выбранном вами режиме совместимости.

Если у вас остались какие-либо вопросы, относящиеся к работе режима совместимости и вообще программ в Windows 10, задавайте, постараюсь помочь.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Драйвер rx570 windows 10
  • Canon lbp 3000 драйвер windows 10 x64
  • Ricoh aficio mp 201spf драйвер windows 10
  • Как сделать чтобы видеть скрытые папки windows 10
  • Как обновить повер поинт на компьютере на новую версию бесплатно для windows 10