IADsSecurityUtility::SetSecurityDescriptor 方法 (iads.h)

SetSecurityDescriptor 方法为指定的文件、文件共享或注册表项设置安全描述符。

语法

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

参数

[in] varPath

一个 VARIANT 字符串,其中包含要为其设置安全描述符的对象的路径。 以下列表中列出了可能的值。

文件

有效的文件路径语法。 例如:“c:\specs\public\adxml.doc”或“\adsi\public\dsclient.exe”。

文件共享

文件共享的有效文件路径语法。 例如:“\adsi\public”。

注册表项

有效的注册表语法。 例如,“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ADs”。

[in] lPathFormat

包含指定 varPath 参数格式的ADS_PATHTYPE_ENUM值之一。

[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
标头 iads.h
DLL Activeds.dll

另请参阅

ADS_PATHTYPE_ENUM

ADS_SD_FORMAT_ENUM

ConvertSecurityDescriptor

IADsSecurityDescriptor

IADsSecurityUtility