В данной статье описывается загрузка 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, содержащий манифест, описанный выше.
-
Добавить в файл ресурсов вашего приложения:
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"