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


Функция LsaStorePrivateData (ntsecapi.h)

Не используйте функции частных данных LSA или универсальное шифрование и расшифровку данных. Вместо этого используйте функции CryptProtectData и CryptUnprotectData . Используйте функции частных данных LSA, только если необходимо управлять секретами LSA, как описано в разделе Модель секретных объектных данных.

Синтаксис

NTSTATUS LsaStorePrivateData(
  [in] LSA_HANDLE          PolicyHandle,
  [in] PLSA_UNICODE_STRING KeyName,
  [in] PLSA_UNICODE_STRING PrivateData
);

Параметры

[in] PolicyHandle

Дескриптор объекта Policy . Дескриптор должен иметь право доступа POLICY_CREATE_SECRET, если это первый раз, когда данные хранятся под ключом, указанным параметром KeyName . Дополнительные сведения см. в разделе Открытие дескриптора объекта политики.

[in] KeyName

Указатель на структуру LSA_UNICODE_STRING , содержащую имя ключа, в котором хранятся частные данные.

[in] PrivateData

Указатель на структуру LSA_UNICODE_STRING , содержащую частные данные для хранения. Функция шифрует эти данные перед их хранением.

Если этот параметр имеет значение NULL, функция удаляет все частные данные, хранящиеся в ключе, и удаляет ключ. Последующие попытки получить данные из ключа возвращают код ошибки STATUS_OBJECT_NAME_NOT_FOUND.

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

Если функция выполняется успешно, возвращаемое значение будет STATUS_SUCCESS.

Если функция завершается сбоем, возвращаемым значением будет код NTSTATUS. Дополнительные сведения см. в разделе Возвращаемые значения функции политики LSA.

Для преобразования кода NTSTATUS в код ошибки Windows можно использовать функцию LsaNtStatusToWinError .

Комментарии

Функция LsaStorePrivateData может использоваться серверными приложениями для хранения паролей клиентов и компьютеров.

Как описано в разделе Частный объект данных, частные объекты данных включают три специализированных типа: локальный, глобальный и компьютерный. Специализированные объекты идентифицируются префиксом в имени ключа: "L$" для локальных объектов, "G$" для глобальных объектов и "M$" для объектов компьютера. Удаленный доступ к локальным объектам невозможен. Доступ к объектам компьютера может осуществлять только операционная система.

В дополнение к этим префиксам следующие значения также указывают локальные объекты или объекты компьютера. Эти значения поддерживаются для обеспечения обратной совместимости и не должны использоваться при создании новых локальных объектов или объектов компьютера. Имя ключа локальных частных объектов данных также может быть "$machine.acc", "SAC", "SAI", "SANSC" или начинаться с "RasDialParms" или "RasCredentials". Имя ключа для объектов компьютера также может начинаться с "NL$" или "sc".

Частные объекты данных, которые не используют ни одно из описанных выше соглашений об именах ключей, можно получить удаленный доступ и не реплицировать в другие домены.

Данные, хранящиеся функцией LsaStorePrivateData , не защищены абсолютно. Однако данные шифруются перед сохранением, а ключ имеет daCL , который позволяет только создателю и администраторам считывать данные.

Используйте функцию LsaRetrievePrivateData , чтобы получить значение , хранящееся в LsaStorePrivateData.

Требования

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

См. также раздел

LSA_UNICODE_STRING

LsaRetrievePrivateData