我使用以下代码创建了一个简单的控制台项目:
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var farm = SPFarm.Local;
Console.WriteLine(SPFarm.Local);
Console.ReadLine();
}
}
}
SP2013服务器安装在Cloudshare的虚拟服务器中。还有另一个用于SQL Server 2012的虚拟机,另一个用于Active Directory 2012(域为AD2012.loc)。
当我使用AD2012.loc/Administrator
帐户打开项目时,它完美无缺。但是,当我使用我的帐户(位于AD2012.loc
和管理员组中)打开帐户时,SPFarm.local
为null
。
我知道这是一个权限,但由于我必须依赖这个SPFarm.Local
对象在另一个项目中使用,这将在几个我无法访问的服务器中执行,我不能确定他们将以管理员身份执行,有什么我可以做的可能冒充代码作为SPFarm管理员运行吗?我试过SPSecurity.RunWithElevatedPrivileges
但没有运气。
更新
我已经尝试运行上面的代码来模仿SPAdmin用户,但仍然是null。
我不能只提供对用户的访问权限,因为这将在客户端计算机上运行,我无法告诉他们提供对SPConfig数据库的访问权限。所以我需要一种方法来在代码,冒充或其他方面做到这一点。
答案 0 :(得分:0)