IADsGroup::Add メソッド (iads.h)
IADsGroup::Add メソッドは、ADSI オブジェクトを既存のグループに追加します。
構文
HRESULT Add(
[in] BSTR bstrNewItem
);
パラメーター
[in] bstrNewItem
グループに追加するオブジェクトの ADsPath を指定する BSTR が含まれます。 詳細については、「解説」を参照してください。
戻り値
最も一般的な戻り値を次に示します。 戻り値の詳細については、「 ADSI エラー コード」を参照してください。
解説
LDAP プロバイダーを使用して IADsGroup オブジェクトにバインドする場合は、 bstrNewItem パラメーターに同じ形式の ADsPath を指定する必要があります。 たとえば、IADsGroup オブジェクトへのバインドに使用される ADsPath にサーバーが含まれている場合、 bstrNewItem パラメーターの ADsPath には同じサーバー プレフィックスが含まれている必要があります。 同様に、サーバーレス パスを使用して IADsGroup オブジェクトにバインドする場合、 bstrNewItem パラメーターにはサーバーレス パスも含まれている必要があります。 サーバー プレフィックスを使用する場合、グループと新しいメンバーが異なるドメインからの場合、遅延が発生する可能性があります。これは、要求が間違ったドメイン コントローラーに送信され、正しいドメインのドメイン コントローラーを参照し、そこで再試行される可能性があるためです。 GUID またはセキュリティ識別子 (SID) ADsPath を使用してメンバーを追加または削除すると、例外が発生します。 この場合、サーバーレス パスは常に bstrNewItem で使用する必要があります。
Active Directory の LDAP プロバイダーを使用すると、メンバー SID の文字列形式を使用してメンバーをグループに追加できます。 bstrNewItem パラメーターには、次の形式の SID 文字列を含めることができます。
LDAP://SID=<010500000000000515000000c6bb507afbda8b7f43170a325b040000>
Active Directory の SID 文字列の詳細については、「SID を 使用したオブジェクトへのバインド」を参照してください。
Active Directory の WinNT プロバイダーを使用すると、メンバーの SID の文字列形式を使用してメンバーをグループに追加することもできます。 bstrNewItem パラメーターには、次の形式の SID 文字列を含めることができます。
WinNT://S-1-5-21-35135249072896"
例
次のコード例は、WinNT プロバイダーを使用して、"Fabrikam" ドメインのグループ ("Administrators") にユーザー オブジェクト ("jeff") を追加する方法を示しています。
Dim grp As IADsGroup
Set grp = GetObject("WinNT://Fabrikam/Administrators")
grp.Add ("WinNT://Fabrikam/jeff")
次のコード例は、LDAP プロバイダーを使用してグループにユーザー オブジェクトを追加する方法を示しています。
Dim grp As IADsGroup
On Error GoTo Cleanup
Set grp = GetObject("LDAP://CN=Administrators, CN=Users, DC=Fabrikam, DC=com")
grp.Add("LDAP://CN=Jeff Smith, OU=Sales,DC=Fabrikam,DC=com")
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set grp = Nothing
次のコード例では、既存のユーザー アカウントを Administrators グループに追加します。
IADsGroup *pGroup = NULL;
HRESULT hr = S_OK;
LPWSTR adsPath = L"WinNT://Fabrikam/Administrators";
hr = ADsGetObject(adsPath,IID_IADsGroup,(void**)&pGroup);
if(FAILED(hr)) {goto Cleanup;}
// This assumes that the "WinNT://Fabrikam/jeff" user account exists
// and does not already belong to the Administrators group.
hr = pGroup->Add(_bstr_t("WinNT://Fabrikam/jeff"));
if(FAILED(hr)){goto Cleanup;}
Cleanup:
if(pGroup)
pGroup->Release();
return hr;
要件
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
対象プラットフォーム | Windows |
ヘッダー | iads.h |
[DLL] | Activeds.dll |