ホーム › Networking.ActiveDirectory › ADS_SECURITY_INFO_ENUM
ADS_SECURITY_INFO_ENUM
列挙型メンバー 4
| 名前 | 10進 | 16進 | 説明 |
|---|---|---|---|
| ADS_SECURITY_INFO_OWNER | 1 | 0x1 | 所有者のデータを読み取る、または設定します。 |
| ADS_SECURITY_INFO_GROUP | 2 | 0x2 | グループのデータを読み取る、または設定します。 |
| ADS_SECURITY_INFO_DACL | 4 | 0x4 | 随意アクセス制御リスト (DACL) のデータを読み取る、または設定します。 |
| ADS_SECURITY_INFO_SACL | 8 | 0x8 | システム アクセス制御リスト (SACL) のデータを読み取る、または設定します。 |
公式ドキュメント
ADS_SECURITY_INFO_ENUM 列挙型は、オブジェクトのセキュリティ データを調べるために使用できるオプションを指定します。
解説(Remarks)
この列挙型で定義されるオプションはビットマスクです。適切なビット演算を使用して、複数のオプションを設定できます。
オブジェクトのセキュリティ データを読み取るには、この列挙型に示されているセキュリティ データ オプションを指定して、IADsObjectOptions インターフェイスを使用します。
次に、一般的なフラグの組み合わせとその用途を示します。
| フラグの組み合わせ | 説明 |
|---|---|
| ADS_SECURITY_INFO_OWNER、ADS_SECURITY_INFO_GROUP、ADS_SECURITY_INFO_DACL | オブジェクトの所有者、グループ、または DACL のセキュリティ データを読み取れるようにします。これは、オブジェクトの作成時の既定の設定です。 |
| ADS_SECURITY_INFO_OWNER、ADS_SECURITY_INFO_GROUP、ADS_SECURITY_INFO_DACL、ADS_SECURITY_INFO_SACL | SACL を読み取れるようにします。ADS_SECURITY_INFO_SACL フラグを単独で使用することはできません。 |
現在のところ、これらのオプションは Active Directory でのみ使用できます。
Visual Basic Scripting Edition (VBScript) はタイプ ライブラリからデータを読み取れないため、アプリケーションは適切なフラグを設定するために、シンボル定数ではなく対応する数値定数を使用する必要があります。良いプログラミング作法としてシンボル定数を使用する場合は、ここで示すように、それらの定数を明示的に宣言してください。
例
次のコード例は、SACL 内のアクセス制御エントリの数を表示します。
Const ADS_SECURITY_INFO_OWNER = &H1
Const ADS_SECURITY_INFO_GROUP = &H2
Const ADS_SECURITY_INFO_DACL = &H4
Const ADS_SECURITY_INFO_SACL = &H8
Const ADS_OPTION_SECURITY_MASK = 3
Dim x As IADs
Dim dso As IADsOpenDSObject
Dim adsPath As String
Dim sd As IADsSecurityDescriptor
Dim sacl As IADsAccessControlList
Dim objOps As IADsObjectOptions
Dim opt As Variant
Dim canReadSacl As Variant
Set dso = GetObject("LDAP:")
adsPath = "LDAP://ArcSrv1/dc=Sales,dc=Fabrikam,dc=com"
Set x = dso.OpenDSObject(adsPath, vbNullString, vbNullString, 1)
Set objOps = x
canReadSacl = ADS_SECURITY_INFO_OWNER _
Or ADS_SECURITY_INFO_GROUP _
Or ADS_SECURITY_INFO_DACL _
Or ADS_SECURITY_INFO_SACL
opt = objOps.GetOption(ADS_OPTION_SECURITY_MASK)
If opt <> canReadSacl Then
objOps.SetOption ADS_OPTION_SECURITY_MASK, canReadSacl
End If
Set sd = x.Get("ntSecurityDescriptor")
Set sacl = sd.SystemAcl
Debug.Print "sacl(aceCount)= " & sacl.AceCount
次のコード例は、システム ACL 内のアクセス制御エントリの数を表示します。簡潔にするため、エラー チェックは省略しています。
void TestObjectOptions()
{
long lCanReadSACL = ADS_SECURITY_INFO_OWNER |
ADS_SECURITY_INFO_GROUP |
ADS_SECURITY_INFO_DACL |
ADS_SECURITY_INFO_SACL;
HRESULT hr = S_OK;
CComPtr<IADs> spObj;
hr = ADsOpenObject(L"LDAP://arcSrv1/dc=Sales,dc=Fabrikam,dc=com",
NULL,
NULL,
ADS_SECURE_AUTHENTICATION,
IID_IADs,
(void**)&spObj);
if(S_OK != hr)
{
return;
}
CComPtr<IADsObjectOptions> spObjOps;
hr = spObj->QueryInterface(IID_IADsObjectOptions, (void**)&spObjOps);
if(S_OK != hr)
{
return;
}
CComVariant svar;
hr = spObjOps->GetOption(ADS_OPTION_SECURITY_MASK, &svar);
if(S_OK != hr)
{
return;
}
if(V_I4(&svar) != lCanReadSACL)
{
svar = lCanReadSACL;
hr = spObjOps->SetOption(ADS_OPTION_SECURITY_MASK, svar);
}
hr = spObj->Get(CComBSTR("ntSecurityDescriptor"), &svar);
if(S_OK != hr)
{
return;
}
CComPtr<IADsSecurityDescriptor> spSd;
hr = V_DISPATCH(&svar)->QueryInterface(IID_IADsSecurityDescriptor,
(void**)&spSd);
if(S_OK != hr)
{
return;
}
CComPtr<IDispatch> spDisp;
hr = spSd->get_SystemAcl(&spDisp);
if(S_OK != hr)
{
return;
}
CComPtr<IADsAccessControlList> spSacl;
hr = spDisp->QueryInterface(IID_IADsAccessControlList,
(void**)&spSacl);
if(S_OK != hr)
{
return;
}
LONG lOptions;
hr = spSacl->get_AceCount(&lOptions);
if(S_OK != hr)
{
return;
}
_tprintf(TEXT("Number of ACE's in the SACL is %d\n"), lOptions);
}
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
列挙メンバーの定義。HSP タブは #define global(値は16進)。
typedef enum ADS_SECURITY_INFO_ENUM : int {
ADS_SECURITY_INFO_OWNER = 1,
ADS_SECURITY_INFO_GROUP = 2,
ADS_SECURITY_INFO_DACL = 4,
ADS_SECURITY_INFO_SACL = 8
} ADS_SECURITY_INFO_ENUM;public enum ADS_SECURITY_INFO_ENUM : int
{
ADS_SECURITY_INFO_OWNER = 1,
ADS_SECURITY_INFO_GROUP = 2,
ADS_SECURITY_INFO_DACL = 4,
ADS_SECURITY_INFO_SACL = 8,
}Public Enum ADS_SECURITY_INFO_ENUM As Integer
ADS_SECURITY_INFO_OWNER = 1
ADS_SECURITY_INFO_GROUP = 2
ADS_SECURITY_INFO_DACL = 4
ADS_SECURITY_INFO_SACL = 8
End Enumimport enum
class ADS_SECURITY_INFO_ENUM(enum.IntEnum):
ADS_SECURITY_INFO_OWNER = 1
ADS_SECURITY_INFO_GROUP = 2
ADS_SECURITY_INFO_DACL = 4
ADS_SECURITY_INFO_SACL = 8// ADS_SECURITY_INFO_ENUM
pub const ADS_SECURITY_INFO_OWNER: i32 = 1;
pub const ADS_SECURITY_INFO_GROUP: i32 = 2;
pub const ADS_SECURITY_INFO_DACL: i32 = 4;
pub const ADS_SECURITY_INFO_SACL: i32 = 8;// ADS_SECURITY_INFO_ENUM
const (
ADS_SECURITY_INFO_OWNER int32 = 1
ADS_SECURITY_INFO_GROUP int32 = 2
ADS_SECURITY_INFO_DACL int32 = 4
ADS_SECURITY_INFO_SACL int32 = 8
)const
ADS_SECURITY_INFO_OWNER = 1;
ADS_SECURITY_INFO_GROUP = 2;
ADS_SECURITY_INFO_DACL = 4;
ADS_SECURITY_INFO_SACL = 8;// ADS_SECURITY_INFO_ENUM
pub const ADS_SECURITY_INFO_OWNER: i32 = 1;
pub const ADS_SECURITY_INFO_GROUP: i32 = 2;
pub const ADS_SECURITY_INFO_DACL: i32 = 4;
pub const ADS_SECURITY_INFO_SACL: i32 = 8;const
ADS_SECURITY_INFO_OWNER* = 1
ADS_SECURITY_INFO_GROUP* = 2
ADS_SECURITY_INFO_DACL* = 4
ADS_SECURITY_INFO_SACL* = 8enum ADS_SECURITY_INFO_ENUM : int {
ADS_SECURITY_INFO_OWNER = 1,
ADS_SECURITY_INFO_GROUP = 2,
ADS_SECURITY_INFO_DACL = 4,
ADS_SECURITY_INFO_SACL = 8,
}#define global ADS_SECURITY_INFO_OWNER 0x1
#define global ADS_SECURITY_INFO_GROUP 0x2
#define global ADS_SECURITY_INFO_DACL 0x4
#define global ADS_SECURITY_INFO_SACL 0x8