Развернуть все
Свернуть все

Загрузка cades.dll/xades.dll в приложение пользователя (только для Windows)

В данной статье описывается загрузка cades.dll/xades.dll в приложение пользователя при использовании интерфейса языка C. Если вы используете Microsoft Visual Studio 2005 и выше, то загрузка cades.dll/xades.dll будет произведена автоматически, достаточно включить файл cades.h/xades.h.

Если же вы используете более раннюю версию или другую среду разработки, то вам необходимо создать манифест, описывающий зависимость вашего приложения от cades.dll/xades.dll:

XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="CryptoPro.PKI.CAdES"
            version="2.0.0.0"
            processorArchitecture="x86"
            publicKeyToken="a6d31b994cfcddc4"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>

XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="CryptoPro.PKI.XAdES"
            version="2.0.0.0"
            processorArchitecture="x86"
            publicKeyToken="a6d31b994cfcddc4"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>

Если Ваше приложение предназначено для архитектуры x64, то в атрибутах processorArchitecture необходимо указать строку amd64.

При загрузке cades.dll/xades.dll, в зависимости от типа вашего приложения, можно выделить три случая:

Приложение не использует расширения сторонних разработчиков
Приложение использует расширения, плагины или представляет собой DLL
Приложение панели управления или DLL, запускаемая под RunDll32.exe

Если ваше приложение не использует расширения сторонних разработчиков, то для загрузки cades.dll/xades.dll необходимо:

  • Создать в каталоге с исходными кодами вашего приложения файл YourApp.exe.manifest, содержащий манифест, описанный выше.

  • Добавить в файл ресурсов вашего приложения:

    RC-файл
    // Эти константы определены в Winuser.rh:
    #define CREATEPROCESS_MANIFEST_RESOURCE_ID  1
    #define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2
    
    CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"
    
    Или создать файл YourApp.exe.manifest, содержащий манифест, описанный выше, в одном каталоге с исполняемым файлом вашего приложения.

Если ваше приложение использует расширения, плагины или представляет собой DLL, то для загрузки cades.dll/xades.dll необходимо:

  • Создать в каталоге с исходными кодами вашего приложения файл YourApp.manifest, содержащий манифест, описанный выше.

  • Компилировать приложение с включенным флагом -DISOLATION_AWARE_ENABLED или добавить в код перед включением заголовочного файла windows.h:

    RC-файл
    #define ISOLATION_AWARE_ENABLED 1
    

  • Добавить в файл ресурсов вашего приложения:

    RC-файл
    // Эти константы определены в Winuser.rh:
    #define CREATEPROCESS_MANIFEST_RESOURCE_ID  1
    #define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2
    
    ISOLATIONAWARE_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.manifest"
    

Если ваше приложение представляет собой приложение панели управления или DLL, заускаемую под RunDll32.exe, то для загрузки cades.dll/xades.dll необходимо:

  • Создать в каталоге с исходными кодами вашего приложения файл YourApp.cpl.manifest, содержащий манифест, описанный выше.

  • Добавить в файл ресурсов вашего приложения:

    RC-файл
    123 RT_MANIFEST "YourApp.cpl.manifest"