В данной статье описывается загрузка cades.dll/xades.dll в приложение пользователя при использовании интерфейса языка C. Если вы используете Microsoft Visual Studio 2005 и выше, то загрузка cades.dll/xades.dll будет произведена автоматически, достаточно включить файл cades.h/xades.h.
Если же вы используете более раннюю версию или другую среду разработки, то вам необходимо создать манифест, описывающий зависимость вашего приложения от cades.dll/xades.dll:
<?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 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
-
Создать в каталоге с исходными кодами вашего приложения файл YourApp.exe.manifest, содержащий манифест, описанный выше.
-
Добавить в файл ресурсов вашего приложения:
Или создать файл 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.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"