Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Обход политик безопасности Windows для запуска встроенных приложений в Delphi 7 на Windows 10

Delphi , ОС и Железо , Windows

При разработке программного обеспечения на языке Delphi, особенно при работе с устаревшими версиями, такими как Delphi 7, можно столкнуться с различными проблемами совместимости, особенно при переходе на новые операционные системы, такие как Windows 10. В данном случае, рассматривается проблема запуска встроенных приложений Windows, таких как Defragmentation и On-screen Keyboard, с использованием функций Windows API в Delphi 7.

Проблема

Использование функций ShellExecute для запуска системных приложений из Delphi 7 в Windows 10 привело к ошибкам. Несмотря на то, что имена файлов остались прежними, изменения в системе безопасности Windows 10, вероятно, препятствуют запуску приложений из папки C:\Windows\System32.

Решение

Применение функции ShellExecuteEx или CreateProcess вместо ShellExecute может улучшить отчетность об ошибках, но не решит проблему.

Подтвержденный ответ

Основная проблема заключается в том, что Delphi 7 производит только 32-битные приложения, и на 64-битной системе Windows 10 они работают в режиме WOW64 (Windows 32-bit on Windows 64-bit). Это приводит к тому, что запросы к папке System32 автоматически перенаправляются в SysWOW64, где могут отсутствовать необходимые приложения.

Для решения проблемы предлагается два варианта:

  1. Использование специального псевдонима Sysnative в пути к приложению, который работает только в режиме WOW64. Для определения необходимости использования Sysnative следует использовать функцию IsWow64Process.
function GetSystem32Folder: string;
var
  Folder: array[0..MAX_PATH] of Char;
  IsWow64: BOOL;
begin
  // ...
end;

function RunDefrag: Boolean;
var
  SysFolder: string;
  Res: Integer;
begin
  // ...
end;

function RunOnScreenKeyboard: Boolean;
begin
  // ...
end;
  1. Временное отключение перенаправления файловой системы с помощью функции Wow64DisableWow64FsRedirection и последующее восстановление с помощью Wow64RevertWow64FsRedirection.
function GetSystem32Folder: string
var
  Folder: array[0..MAX_PATH] of Char;
begin
  // ...
end;

function RunDefrag: Boolean;
var
  SysFolder: string;
  OldState: Pointer;
  Res: Integer;
begin
  // ...
end;

function RunOnScreenKeyboard: Boolean;
var
  OldState: Pointer;
begin
  // ...
end;

Однако стоит отметить, что запуск osk.exe может быть невозможен, если включена Учетная запись пользователя (UAC). В этом случае потребуется создать вспомогательный 64-битный процесс для запуска osk.exe от имени вашего приложения.

Альтернативный ответ

Если функция Wow64DisableWow64FsRedirection недоступна в вашей версии Delphi, можно использовать динамическое обращение к этой функции.

function ChangeFSRedirection(bDisable: Boolean): Boolean;
var
  // ...
begin
  // ...
end;

Заключение

При работе с 32-битными приложениями на 64-битной операционной системе важно учитывать особенности работы WOW64 и возможные ограничения безопасности, такие как UAC. Использование предложенных решений позволит обойти проблемы совместимости и обеспечить корректную работу встроенных приложений в Delphi 7 на Windows 10.

Создано по материалам из источника по ссылке.

При разработке в Delphi 7 для Windows 10 возникла проблема с обходом политик безопасности для запуска встроенных приложений из-за изменений, связанных с переходом на 64-битную систему и режимом WOW64.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 20:23:23/0.0033228397369385/0