C# コードを使用して SharePoint 2007 ユーザー情報リスト (UIL) を更新する方法 私のコードは、管理者としてログインすると正常に動作しますが、単純なユーザーとしてログインすると、単純なユーザーは UIL にアクセスできないため、「アクセスが拒否されました」というエラーがスローされます。シンプルなユーザーが UIL で自分の情報 (メールなど) を編集できるようにする方法が必要です。助けてください。それは非常に重要です。私のコードは次のようなものです:
string var_UserName = myUsername;
string var_newemail = mynewemail@abc.com;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = SPContext.Current.Site)
{
SPWeb curWeb = site.OpenWeb();
SPList userList = SPContext.Current.Web.SiteUserInfoList;
StringBuilder queryBuilder = new StringBuilder();
queryBuilder.Append(@"<Query>");
queryBuilder.Append(@"<OrderBy>");
queryBuilder.Append(@"<FieldRef Name='Title' />");
queryBuilder.Append(@"</OrderBy>");
queryBuilder.Append(@"<Where>");
queryBuilder.Append(@"<Eq>");
queryBuilder.Append(@"<FieldRef Name='Title' />");
queryBuilder.Append(@"<Value Type='Text'>" + var_UserName + "</Value>");
queryBuilder.Append(@"</Eq>");
queryBuilder.Append(@"</Where>");
queryBuilder.Append(@"</Query>");
SPQuery query = new SPQuery();
query.Query = queryBuilder.ToString();
SPListItemCollection oSPListItemCollection = userList.GetItems(query);
SPField field = userList.Fields.GetField("E-Mail");
foreach (SPItem item in oSPListItemCollection)
{
if (item["Title"].ToString().ToLower() == Login1.UserName.ToLower())
{
item[field.InternalName] = var_newemail;
curWeb.AllowUnsafeUpdates = true;
item.Update(); //throws error when not logged in as administrator
curWeb.AllowUnsafeUpdates = false;
break;
}
}
}
});