我正在使用SPSecurity.RunWithElevatedPrivileges ....允许“模仿”超级用户“sharepoint \ system”帐户。
“sharepoint \ system”帐户是否是当前Web应用程序的应用程序池标识的别名?
因此,如果我的应用程序池标识是自定义用户(包含电子邮件和其他信息),我该如何检索其信息? (我想要获取的信息是电子邮件地址......自定义应用程序池用户电子邮件有值,“sharepoint \ system”帐户电子邮件没有价值!!!)
我还尝试使用WindowsIdentity.Impersonate(IntPtr.Zero)方法检索appPool标识但是......没有!
所以任何想法????
答案 0 :(得分:1)
注意事项:
SPSecurity.RunWithElevatedPrivileges
委托方法中运行的代码在SharePoint\System
帐户下运行SharePoint\System
帐户拥有超级用户权限。但是,它在SharePoint运行时环境中被识别,但不是由Windows安全系统识别,即它不代表运行AppPool的帐户如果您想访问运行AppPool的用户帐户的电子邮件地址,您可以尝试...
SPSecurity.RunWithElevatedPrivileges(delegate {
using (SPSite siteCollection = new SPSite("Url"))
{
using (SPWeb site = siteCollection.OpenWeb())
{
Console.WriteLine(string.Format("Current Logged in User is {0}. And Email Id: {1} ", site.CurrentUser.LoginName ,site.CurrentUser.Email));
appPoolAccount = siteCollection.WebApplication.ApplicationPool.Username;
SPUser appPoolUser = site.Users[appPoolAccount] as SPUser;
Console.WriteLine(string.Format("AppPool User is {0}. And Email Id: {1} ", appPoolUser.LoginName, appPoolUser.Email));
Console.ReadKey();
}
}
});
Email
对象的SPUser
属性,如上所述..