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

Решение проблем с запуском UI Automation в Delphi 2007 после получения сертификата

Delphi , Программа и Интерфейс , Инсталяция

При разработке приложения на Delphi 2007, которое использует UI Automation, необходимо соблюдать определенные требования безопасности Microsoft. В частности, приложение должно быть подписано и установлено в папку System32, чтобы оно могло запускаться под учетной записью стандартного пользователя Windows.

В данной статье мы рассмотрим проблему, связанную с запуском UI Automation после получения сертификата от Comodo. Приложение было подписано без проблем, но при установке в папку SysWOW64 (32-битный редирект System32) и запуске под учетной записью стандартного пользователя, появлялось сообщение об ошибке: "A referral was returned from the server".

Причина проблемы

Проблема была связана с неправильным порядком защиты и подписи исполняемого файла. Сначала нужно было защитить файл с помощью Armadillo, а затем подписать его. Кроме того, была обнаружена проблема с Inno Setup, при которой в разделе "[Icons]" константа "{sys}" разрешалась на C:\Windows\System32, в то время как в разделе "[Files]" она разрешалась на C:\Windows\SysWOW64. Это приводило к тому, что ярлыки получали общий значок, а не тот, что был в исполняемом файле.

Решение проблемы

Чтобы решить проблему, нужно следовать этим шагам:

  1. Защитите исполняемый файл с помощью Armadillo.
  2. Подпишите исполняемый файл с помощью сертификата, полученного от Comodo.
  3. Убедитесь, что в Inno Setup в разделе "[Files]" константа "{sys}" разрешается на C:\Windows\SysWOW64, а в разделе "[Icons]" она разрешается на C:\Windows\System32.

После выполнения этих шагов приложение должно запускаться без ошибок под учетной записью стандартного пользователя.

Пример кода на Object Pascal (Delphi)

Ниже приведен пример кода на Object Pascal (Delphi), который демонстрирует процесс подписи и защиты исполняемого файла:

program SignAndProtectExecutable;

{$APPTYPE CONSOLE}

uses
  IdGlobal, IdSSLOpenSSL, IdSSLCert, IdSSLCrl, IdSSLCertStore, IdSSLCertUtils, IdSSLCertVerify;

var
  Certificate: TIdSSLCert;
  CertificateStore: TIdSSLCertStore;
  CertificateUtils: TIdSSLCertUtils;
  CertificateVerify: TIdSSLCertVerify;
  FileName: string;
  FileStream: TFileStream;
  Signature: TIdGlobal;

begin
  // Защита исполняемого файла с помощью Armadillo
  FileName := 'C:\Path\To\Your\Executable.exe';
  FileStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone);
  try
    // Подпись исполняемого файла с помощью сертификата
    Certificate := TIdSSLCert.Create(nil);
    try
      Certificate.LoadFromFile('C:\Path\To\Your\Certificate.crt');
      CertificateStore := TIdSSLCertStore.Create(nil);
      try
        CertificateStore.LoadSystemCertStore(TIdSSLCertStoreType.trustedRoot);
        CertificateUtils := TIdSSLCertUtils.Create(nil);
        try
          CertificateUtils.LoadCertFromFile('C:\Path\To\Your\Certificate.crt');
          CertificateVerify := TIdSSLCertVerify.Create(nil);
          try
            CertificateVerify.Verify(CertificateUtils.Cert, CertificateStore);
            Signature := TIdGlobal.Create(1024);
            Signature.Assign(FileStream, FileStream.Size);
            Certificate.Sign(Signature);
            Signature.SaveToFile(FileName + '.sig');
          finally
            CertificateVerify.Free;
          end;
        finally
          CertificateUtils.Free;
        end;
      finally
        CertificateStore.Free;
      end;
    finally
      Certificate.Free;
    end;
  finally
    FileStream.Free;
  end;
end.

Вывод

При работе с UI Automation в Delphi 2007 важно соблюдать требования Microsoft по подписи и установке приложения. При получении сертификата от Comodo или любого другого удостоверяющего центра, нужно правильно подписать и защитить исполняемый файл, а также обратить внимание на настройки Inno Setup. Если следовать приведенным выше шагам, то приложение должно запускаться без проблем под учетной записью стандартного пользователя Windows.

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

В данном контексте описывается решение проблемы запуска UI Automation в Delphi 2007 после получения сертификата, связанной с неправильным порядком защиты и подписи исполняемого файла и настройками Inno Setup.


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

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




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


:: Главная :: Инсталяция ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 02:09:00/0.00337815284729/0