我使用以下代码创建了一个简单的控制台项目:
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 用户,但仍然为空。
我不能只授予用户访问权限,因为这将在客户端计算机上运行,并且我不能告诉他们授予对 SPConfig 数据库的访问权限。所以我需要一种方法来在代码中做到这一点,模仿什么的。