是否可以从位于 _layouts 文件夹中的 ASP.NET 应用程序运行 STSADM?
我已在此页面上复制了此代码。
当它运行时,返回消息是Access Denied。
如果您正在尝试这样做,您可能需要授予对相关 SharePoint 应用程序的 ASP.NET 应用程序池帐户的访问权限以执行 stsadm。或者,如果您正在模拟帐户,则发送给有问题的模拟用户。您还需要为其运行的所有 SharePoint 内容(SQL Server、SharePoint 内容等)授予应用程序池帐户附带权限
注意:这可能会带来各种风险,从 Internet/Intranet 运行 STSADM 可以做各种我不敢想的事情。非常警惕对 stsadm 命令执行的注入攻击以及提升特权以执行没有业务的 stsadm 的人。你能想出一个更好的方法来做你想做的事吗?
Process.Start 将导致 STSADM在 ASPNET 工作进程帐户下运行
因此,如果您授予此帐户使用 STSADM 的权限,那么您必须确保您的网页正确限制了可以执行的操作以及由谁执行
+10 为 tekiegreg 的 CAUTION 评论 - 如果你弄错了它可能会变成核!
也许更好的方法是使用对象模型Microsoft.SharePoint.Administration作为大多数可以通过 STSADM 完成的事情都可以通过 WSSv3 的对象模型完成
这将有几个优点 1)不解析 console.out 字符串 2)您应该能够模拟经过身份验证的用户,以便 STSADM/SharePoint 负责确定允许用户执行的操作。