IWMSAccessControlList::Add

The Add method adds a new IWMSAccessControlEntryIWMSAccessControlEntry Interface to the IWMSAccessControlList collection.

HRESULT Add(
  BSTR  bstrTrustee,
  WMS_ACCESS_CONTROL  wmsAccess,
  IWMSAccessControlEntry**  pNewEntry
);

Arguments

bstrTrustee

[in] BSTR containing the name of the account or logon session to which the access control entry applies. The name can identify one of the following account or session types.

Type

Description

Domain Account

The name specifies a domain account of the form domain\user_account.

NT Security Principal

The name identifies a NT-based security system attribute.

Built-in group

The name identifies a built-in user group identified by the NT-based security system. It has the form BUILTIN\user_group_name.

wmsAccess

[in] Member of a WMS_ACCESS_CONTROL enumeration type indicating the trustee access mask setting. This must be one of the following values.

Value

Description

WMS_ACL_DENY_READ

Denies read access.

WMS_ACL_DENY_WRITE

Denies write access.

WMS_ACL_DENY_CREATE

Denies creation access.

WMS_ACL_DENY_ALL

Denies read, write, and creation access.

WMS_ACL_ALLOW_READ

Enables read access.

WMS_ACL_ALLOW_WRITE

Enables write access.

WMS_ACL_ALLOW_CREATE

Enables creation access.

WMS_ACL_ALLOW_ALL

Enables read, write, and creation access.

pNewEntry

[out] Pointer to a pointer to an IWMSAccessControlEntry interface. This method calls AddRef internally. To avoid memory leaks, you must call Release when you are finished using the interface.

Return Value

If the method succeeds, it returns S_OK. If it fails, it returns an HRESULT error code.

Return code

Number

Description

E_INVALIDARG

0x80070057

The wmsAccess value is not valid, or the bstrTrustee name does not contain a backslash (\) or a period (.).

E_POINTER

0x80004003

The bstrTrustee parameter is NULL, or an internal ACL helper does not exist.

ERROR_INVALID_ACCOUNT_NAME

1315

The bstrTrustee parameter does not contain a properly formed account name.

ERROR_DUP_NAME

52

A duplicate account name exists on the network.

Example

#include <windows.h>
#include <atlbase.h>    // Includes CComBSTR and CComVariant.

// To access system plug-in interfaces, the
// entire type library must be imported as shown.
#import "WMSServerTypeLib.dll" no_namespace named_guids \
                               raw_interfaces_only

// Declare variables and interfaces.
IWMSServer              *pServer;
IWMSPlugins             *pPlugins;
IWMSPlugin              *pPlugin;
IDispatch               *pDispatch;
IWMSACLCheckAdmin       *pACLCheckAdmin;
IWMSAccessControlList   *pAccessCtrlList;
IWMSAccessControlEntry  *pAccessCtrlEntry;

HRESULT         hr;
CComVariant     varIndex;
CComBSTR        bstrTrustee;
long            lCount;

// Initialize the COM library and retrieve a pointer
// to an IWMSServer interface.
hr = CoInitialize(NULL);
hr = CoCreateInstance(CLSID_WMSServer,
                      NULL,
                      CLSCTX_ALL,
                      IID_IWMSServer,
                      (void **)&pServer);
if (FAILED(hr)) goto EXIT;

// Retrieve a pointer to an IWMSPlugins interface
// containing event handler plug-ins.
hr = pServer->get_EventHandlers(&pPlugins);
if (FAILED(hr)) goto EXIT;

// Retrieve a pointer to the IWMSPlugin interface
// of the plug-in to be configured.
varIndex = "WMS Publishing Points ACL Authorization";
hr = pPlugins->get_Item(varIndex, &pPlugin);
if (FAILED(hr)) goto EXIT;

// Retrieve a pointer to the custom interface
// of the plug-in.
hr = pPlugin->get_CustomInterface(&pDispatch);
if (FAILED(hr)) goto EXIT;

// Query the specific administration interface
// for the plug-in.
hr = pDispatch->QueryInterface(IID_IWMSACLCheckAdmin,
                              (void **)&pACLCheckAdmin);
if (FAILED(hr)) goto EXIT;

// Retrieve a pointer to the list of access control entries.
hr = pACLCheckAdmin->get_AccessControlList(&pAccessCtrlList);
if (FAILED(hr)) goto EXIT;

// Add a new entry to the access control list.
bstrTrustee = "DOMAIN\username";
hr = pAccessCtrlList->Add(bstrTrustee, WMS_ACL_ALLOW_ALL,
                          &pAccessCtrlEntry);
if (FAILED(hr)) goto EXIT;

EXIT:
    // TODO: Release temporary COM objects and uninitialize COM.

Requirements

Library: WMSServerTypeLib.dll.

Platform: Windows ServerĀ 2003 family, Windows ServerĀ 2008 family.

See Also

Reference

IWMSAccessControlEntry Interface