Поделиться через


Метод ICEnroll::p ut_PVKFileName (xenroll.h)

[Это свойство больше не доступно для использования в Windows Server 2008 и Windows Vista.]

Свойство PVKFileName задает или извлекает имя файла, который будет содержать экспортированные ключи.

Это свойство было впервые определено в интерфейсе ICEnroll .

Это свойство является чтением и записью.

Синтаксис

HRESULT put_PVKFileName(
  BSTR bstr
);

Параметры

bstr

Возвращаемое значение

None

Remarks

Свойство PVKFileName влияет на поведение следующих методов:

Экспорт функциональных возможностей может не поддерживаться поставщиком служб шифрования (CSP). Исторически Authenticode экспортировал закрытый ключ в PVK-файл на диске и удалил его из реестра. По умолчанию закрытые ключи не создаются для экспорта, и многие поставщики служб шифрования не поддерживают экспорт ключей. Однако если CSP поддерживает экспорт закрытых ключей, указание значения, отличного от NULL, для свойства PVKFileName приводит к созданию закрытых ключей как экспортируемых, а закрытый и открытый ключи записываются в файл, указанный свойством PVKFileName . Закрытый ключ удаляется из CSP. Имя файла, указанное свойством , может быть любым доступным файлом. По умолчанию PVK-файл не создается, а ключи не создаются как экспортируемые.

Если PVK-файл уже существует, пользователь получает уведомление и запрашивает разрешение на его перезапись.

Свойство GenKeyFlags также имеет флаг, который определяет, можно ли экспортировать закрытый ключ. Используйте осторожность при совместном использовании свойств GenKeyFlags и PVKFileName . Если сначала задано свойство PVKFileName , свойству GenKeyFlags автоматически присваивается значение CRYPT_EXPORTABLE. Если свойство GenKeyFlags задано (с помощью функции put_GenKeyFlags ) без включения флага CRYPT_EXPORTABLE, то GenKeyFlags не будет иметь значение CRYPT_EXPORTABLE, а созданные ключи не будут экспортироваться. Это демонстрируется в следующей процедуре:

  1. Вызовите put_PVKFileName , чтобы задать имя файла, который будет получать экспортированные ключи. Свойству GenKeyFlags автоматически присваивается значение CRYPT_EXPORTABLE.
  2. Вызов put_GenKeyFlags со значением, не равным CRYPT_EXPORTABLE, например нулю.
  3. Для GenKeyFlags больше не задано значение CRYPT_EXPORTABLE (значение, которое было автоматически задано на шаге 1).

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

Кроме того, пользователь может определить текущее значение бита CRYPT_EXPORTABLE в свойстве GenKeyFlags , а затем выполнить побитовую операцию ИЛИ между этим значением и любыми изменениями, внесенными в свойство GenKeyFlags , чтобы гарантировать, что бит не будет уничтожен. Пользователь также может задать бит CRYPT_EXPORTABLE при обновлении свойства GenKeyFlags .

Примеры

BSTR     bstrPVKFile = NULL;
BSTR     bstrNewPVKFile = NULL;
HRESULT  hr;

// pEnroll is previously instantiated ICEnroll interface pointer

// get the PVKFileName
hr = pEnroll->get_PVKFileName( &bstrPVKFile );
if (FAILED( hr ))
    printf("Failed get_PVKFileName - %x\n", hr );
else
    printf( "PVKFileName: %ws\n", bstrPVKFile );
// free BSTR when done
if ( NULL != bstrPVKFile )
    SysFreeString( bstrPVKFile );

// set the PVKFileName, for example, "MyKeys.pvk"
bstrNewPVKFile = SysAllocString(TEXT("FILENAMEHERE"));

hr = pEnroll->put_PVKFileName( bstrNewPVKFile );
if (FAILED( hr ))
    printf("Failed put_PVKFileName - %x\n", hr );
else
    printf( "PVKFileName set to %ws\n", bstrNewPVKFile );
// free BSTR when done
if ( NULL != bstrNewPVKFile )
    SysFreeString( bstrNewPVKFile );

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header xenroll.h
Библиотека Uuid.lib
DLL Xenroll.dll