在_layouts下从ASP.NET运行STSADM

时间:2009-01-28 19:36:54

标签: .net asp.net sharepoint sharepoint-2007

是否可以从驻留在_layouts文件夹中的ASP.NET应用程序运行STSADM?

我已将此代码复制到this page

运行时,返回消息为拒绝访问

2 个答案:

答案 0 :(得分:3)

可能您需要为相关SharePoint应用程序提供对ASP.NET应用程序池帐户的访问权限,以便执行stsadm(如果您正在尝试这样做)。或者,如果您冒充帐户,则向模拟的用户提出。您还需要为其正在运行的所有SharePoint内容提供应用程序池帐户附属权限(SQL Server,SharePoint内容等)

注意:这可能会带来各种风险,从Internet / Intranet运行STSADM可以做各种我不敢想的事情。对stsadm命令执行的注入攻击非常警惕,人们提升权限以执行没有业务的stsadm。你能想到一个更好的方法来做你想做的事吗?

答案 1 :(得分:3)

Process.Start将导致STSADM到run under the ASPNET worker process account

因此,如果您授予此帐户使用STSADM的权限,那么您必须确保您的网页正确限制可以执行的操作以及由谁执行

+10 for tekiegreg的小心评论 - 如果你弄错了它可能会变成核!

也许更好的方法是使用对象模型Microsoft.SharePoint.Administration作为大多数可以完成的事情虽然STSADM可以通过WSSv3的对象模型完成

这将有一些优点 1)没有解析console.out字符串 2)您应该能够impersonate the authenticated user,然后STSADM / SharePoint负责确定允许用户执行的操作。