Это может быть не тот ответ, который вы ищете, но олицетворение довольно легко, если у вас есть код, запущенный в GAC на сервере SharePoint. Вам не нужно знать пароль, который многие не понимают, поэтому я продолжу предполагать, что именно по этой причине вы не хотели выдавать себя за другого. Вот как это сделать.
Вы можете подключиться к SharePoint, используя типичный конструктор, который вы используете для SPSite, и найти соответствующий объект SPUser. Сделав это, вы можете получить свойство UserToken для этого SPUser. Затем вам нужно будет снова использовать конструктор SPSite, но использовать перегрузку, которая обеспечивает SPUserToken. Тогда все, что вы делаете в SharePoint, будет делаться через олицетворение. Нет необходимости работать с повышенными привилегиями.
Хорошо, теперь, когда я сказал это словами, я попытаюсь угадать код. Это должно быть что-то вроде:
// Just determine the user token for a particular user
SPUserToken userToken = null;
using (SPSite tempSite = new SPSite("http://sharepointurl"))
{
using (SPWeb tempWeb = tempSite.OpenWeb())
{
// I think this next line works, but I'm going from memory
// I believe the user needs to have already logged into the site at least once
SPUser user = tempWeb.AllUsers["username"];
userToken = user.UserToken;
}
}
// Now do whatever we want impersonating that user
using (SPSite site = new SPSite("http://sharepointurl", userToken))
{
using (SPWeb web = site.OpenWeb())
{
// Do whatever you want here
}
}