[方法] アクセス制御エントリをメタデータ オブジェクトに追加する

メタデータ オブジェクトでメソッドの実行、設定の編集、およびアクセス許可の設定を行えるように、ユーザーにアクセス許可を付与する必要があります。このコード例は、オブジェクト モデルを使用してメタデータ オブジェクトのアクセス制御エントリを追加する方法を示しています。最初の例では、現在のユーザーのアクセス制御エントリを追加します。2 つ目の例では、この例で示されているユーザーを追加します。パイプ (|) 特殊文字を使用して複数の権利をユーザーに付与できることに注目してください。

この例では、現在のユーザーおよび指定したユーザーのアクセス制御エントリを追加します。

前提条件

プロジェクト参照

このサンプルを実行する前に、コンソール アプリケーション コード プロジェクトに以下のプロジェクト参照を追加します。

  • Microsoft.SharePoint

  • Microsoft.SharePoint.Portal

  • Microsoft.Office.Server

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Server.ApplicationRegistry.Administration;
using Microsoft.Office.Server.ApplicationRegistry.Infrastructure;
using WSSAdmin = Microsoft.SharePoint.Administration;
using OSSAdmin = Microsoft.Office.Server.Administration;

namespace Microsoft.SDK.SharePointServer.Samples
{
    class GetStartedAndCreateSystem
    {
        const string yourSSPName ="EnterYourSSPNameHere";
        const string userName ="domainname\\username";

        static void Main(string[] args)
        {
            SetupBDC();
            SetAccessControlListForCurrentUser();
            SetAccessControlListForSpecifiedUser();
            Console.WriteLine("Press any key to exit...");
            Console.Read();
        }
        static void SetupBDC()
        {
            SqlSessionProvider.Instance().SetSharedResourceProviderToUse(yourSSPName);
        }
        public static void SetAccessControlListForCurrentUser()
        {
            LobSystemInstance mySysInstance = null;
            LobSystemInstanceCollection sysInsCollection = ApplicationRegistry.Instance.GetLobSystemInstancesLikeName("AdventureWorksSampleFromCode");
            foreach (LobSystemInstance sysInstance in sysInsCollection)
            {
                if (sysInstance.Name == "AdventureWorksSampleFromCode")
                {
                    mySysInstance = sysInstance;
                    break;
                }
            }
            LobSystem ls = mySysInstance.LobSystem;
            IAccessControlList acl = ls.GetAccessControlList();
            String currentIdentity = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
            acl.Add(new IndividualAccessControlEntry(currentIdentity, BdcRights.SetPermissions | BdcRights.Execute));
            try
            {
                ls.SetAccessControlList(acl);
            }

            catch (AccessDeniedException)
            {
            }
        }

        public static void SetAccessControlListForSpecifiedUser()
        {
            LobSystemInstance mySysInstance = null;
            LobSystemInstanceCollection sysInsCollection = ApplicationRegistry.Instance.GetLobSystemInstancesLikeName("AdventureWorksSampleFromCode");
            foreach (LobSystemInstance sysInstance in sysInsCollection)
            {
                if (sysInstance.Name == "AdventureWorksSampleFromCode")
                {
                    mySysInstance = sysInstance;
                    break;
                }
            }
            LobSystem ls = mySysInstance.LobSystem;
            IAccessControlList acl = ls.GetAccessControlList();
            //replace the domain and user names here
            String currentIdentity = userName;
            acl.Add(new IndividualAccessControlEntry(currentIdentity, BdcRights.SetPermissions | BdcRights.UseInBusinessDataInLists | BdcRights.SelectableInClients));
            try
            {
                ls.SetAccessControlList(acl);
            }
            catch (AccessDeniedException)
            {
                //your exception handling code here
            }
            Console.WriteLine("Done");
        }
    }
}

See Also

概念

ビジネス データ カタログ : メタデータ モデル