ユーザー プロファイル オブジェクト モデルの概要
Microsoft Office SharePoint Server 2007 は、ユーザー プロファイルをプログラムによって操作するための優れたオブジェクト モデルを提供します。ここでは、Microsoft Office SharePoint Portal Server 2003 ユーザーのために、オブジェクト モデルでの主要な変更点を簡単に説明します。方法に関する情報については、以下のセクションを参照してください。
オブジェクト モデルを使用してユーザー プロファイル ストアを構成する
オブジェクト モデルを使用してユーザー プロファイル ストアにアクセスする
ユーザー プロファイル オブジェクト モデルを使用する
SharePoint Portal Server 2003 では、Microsoft.SharePoint.Portal.UserProfiles 名前空間を使用して、ユーザーのプロファイルおよび個人用サイトの操作を行います。ただし、Office SharePoint Server 2007 では、Microsoft.Office.Server.dll の Microsoft.Office.Server.UserProfiles 名前空間を使用してください。この新しい名前空間は、Office SharePoint Server 2007 のユーザー プロファイル用にオブジェクト モデルのサポートを提供します。Microsoft.SharePoint.Portal.UserProfiles 名前空間は、下位互換性の目的で引き続き存在します。SharePoint Portal Server 2003 で Microsoft.SharePoint.Portal.UserProfiles 名前空間を使用して記述されたアプリケーションやツールは、Office SharePoint Server 2007 でも動作します。ただし、特に新しいユーザー プロファイル機能 (これらの機能の詳細については、「ユーザー プロファイルおよび対象ユーザーの設定の新機能」を参照) を使用している場合には、これらが意図したとおりに動作しない場合があることに注意してください。
たとえば、Microsoft.SharePoint.Portal.UserProfiles API を使用して Office SharePoint Server 2007 のユーザー プロファイル プロパティのコレクションを取得した場合、SharePoint Portal Server 2003 と互換性がある単一値プロパティのみが返されます。新しい複数値プロパティおよび選択肢リストを持つすべてのプロパティは無視されます。そのため、新しいアプリケーションを記述する場合や古いアプリケーションをアップグレードする場合は、Microsoft.Office.Server.dll の新しい Microsoft.Office.Server.UserProfiles 名前空間を使用してください。Microsoft.SharePoint.Portal.UserProfiles 名前空間内のすべてのクラスは推奨されていないため、その名前空間内のクラスまたはメソッドを使用するたびに警告を受け取ることになります。
重要
Office SharePoint Server 2007 SDK の API 参照情報は、作成中です。API 参照情報については、「Microsoft Office SharePoint Portal Server 2003 SDK」 を参照してください。
Office SharePoint Server 2007 で UserProfileManager オブジェクトを取得する
SharePoint Portal Server 2003 で UserProfileManager オブジェクトを取得するために使用した構文は、下位互換性によって引き続き動作しますが、ここでは、Office SharePoint Server 2007 でのユーザー プロファイル オブジェクト モデルを使用した、コードの新しい記述方法を示します。
コードを実行する前に、servername を Office SharePoint Server 2007 サーバー名に置き換えます。
using Microsoft.Office.Server;
using Microsoft.Office.Server.Administration;
using Microsoft.Office.Server.UserProfiles;
using Microsoft.SharePoint;
namespace AccountNameDump
{
public class Program
{
public static void Main(string[] args)
{
try
{
using (SPSite site = new SPSite("https://servername"))
{
ServerContext context =
ServerContext.GetContext(site);
UserProfileManager profileManager = new
UserProfileManager(context);
foreach (UserProfile profile in profileManager)
{
Console.WriteLine(profile[PropertyConstants.AccountName]);
}
}
}
catch (FileNotFoundException exception)
{
Console.WriteLine(exception.ToString());
}
}
}
}