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


Метод IADsSecurityUtility::SetSecurityDescriptor (iads.h)

Метод SetSecurityDescriptor задает дескриптор безопасности для указанного файла, общей папки или раздела реестра.

Синтаксис

HRESULT SetSecurityDescriptor(
  [in] VARIANT varPath,
  [in] long    lPathFormat,
  [in] VARIANT varData,
  [in] long    lDataFormat
);

Параметры

[in] varPath

Строка VARIANT , содержащая путь к объекту для задания дескриптора безопасности. Возможные значения перечислены в следующем списке.

File

Допустимый синтаксис пути к файлу. Например, "c:\specs\public\adxml.doc" или "\adsi\public\dsclient.exe".

Общая папка

Допустимый синтаксис пути к файлу для общей папки. Например: "\adsi\public".

Раздел реестра

Допустимый синтаксис реестра. Например, "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ADs".

[in] lPathFormat

Содержит одно из ADS_PATHTYPE_ENUM значений, задающее формат параметра varPath .

[in] varData

Variant, содержащий новый дескриптор безопасности. Формат дескриптора безопасности определяется параметром lDataFormat .

[in] lDataFormat

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

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

Возвращает S_OK в случае успешного выполнения или код ошибки COM или Win32 в противном случае. Возможные коды ошибок перечислены в следующем списке.

Комментарии

Записи управления доступом должны отображаться в следующем порядке в списке управления доступом дескриптора безопасности:

  • ACE с запретом в доступе, которые применяются к самому объекту
  • ACE с запретом в доступе, которые применяются к дочернему элементу объекта, например набору свойств или свойству
  • ACE с разрешенным доступом, которые применяются к самому объекту
  • ACE с разрешенным доступом, которые применяются к дочернему элементу объекта, например набору свойств или свойству
  • Все унаследованные ACE

Примеры

В следующем примере кода показано, как задать дескриптор безопасности для файла.

Dim dacl as IADsAccessControlList
Dim sd as IADsSecurityDescriptor
Dim newAce as New AccessControlEntry
Dim sdUtil as New ADsSecurityUtility

Set sd = sdUtil.GetSecurityDescriptor("c:\specs\adsixml.doc", ADS_PATH_FILE, ADS_SD_FORMAT_IID )
Set dacl = sd.DiscretionaryAcl
 
' Add a new ACE for Jeff Smith. 
newAce.Trustee = "Fabrikam\jeffsmith" 
newAce.AccessMask = ADS_RIGHT_GENERIC_READ Or ADS_RIGHT_GENERIC_EXECUTE 

newAce.AceType = ADS_ACETYPE_ACCESS_ALLOWED 

dacl.AddAce newAce 
sd.DiscretionaryAcl = dacl 
sdUtil.SetSecurityDescriptor "c:\specs\adsixml.doc", ADS_PATH_FILE, sd, ADS_SD_FORMAT_IID

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set dacl = Nothing
    Set sd = Nothing
    Set newAce = Nothing
    Set sdUtil = Nothing

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Минимальная версия сервера Windows Server 2008
Целевая платформа Windows
Header iads.h
DLL Activeds.dll

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

ADS_PATHTYPE_ENUM

ADS_SD_FORMAT_ENUM

ConvertSecurityDescriptor

IADsSecurityDescriptor

IADsSecurityUtility