防止用户创建会议工作区的一些体面的方法是什么?

问题描述:

我在SharePoint中有一个事件列表,并且需要禁止用户有能力在新事件表单中创建会议工作区。自定义新的事件表单(这打破了附件支持),这怎么能做到?防止用户创建会议工作区的一些体面的方法是什么?

默认情况下,为了让用户创建会议工作区,他们需要是管理员或网站所有者(具体而言,他们需要创建网站权限)。如果您未授予他们此权限,他们将无法创建会议工作区。

这将禁止用户在设置这些权限的站点下创建任何站点。我不知道如何限制对特定网站定义的访问,但仍允许用户创建不同的网站定义。

我不认为有这样做的支持方式。一种方法是编辑C:\ Program Files \ Common Files \ Microsoft Shared \ web server extensions \ 12 \ TEMPLATE \ 1033 \ XML \ WEBTEMP.XML中的WEBTEMP.XML文件(当然首先进行备份)。注释掉线如下:

<!-- <Template Name="MPS" ID="2"> 
    ...  
    </Template> --> 

编辑这个文件,并且场中的每个服务器上执行IISRESET后,你不应该能够不再创建会议工作区。

+0

这不会影响农场中的所有webapps吗?我不能让我的解决方案影响可能使用会议工作区的其他解决方案 – andrew 2008-10-01 22:08:01

如果您可以在主页面中获得一些JavaScript,我想出了这个小黑客。

它有在MS几个缺点可能releaase修补程序或服务包之一:

  • 改变的名称“使用会议工作区组织与会者,议程,文件,会议纪录,以及此事件的其他详细信息“复选框,以便字符串”CrossProjectLinkField“不再处于名称中,或者...

  • 他们可以在某个其他OOTB上的某个其他输入元素的名称中使用相同的字符串标记

在梯子的情况下(我不完全确定它现在是错误的),如果这些输入正在运行一个运行此脚本的主页面,它们将被禁用。

但是这是我可以处理的风险。无论何时您依赖由其他人控制的客户ID和名称,您都会面临这些风险。

<script type="text/javascript">  
    var anchors = document.getElementsByTagName('input'); 
    for(var i=0;i<anchors.length;i++) 
    { 
     var anchorName = anchors[i].name.match('CrossProjectLinkField'); 
     if(anchorName != null) 
     { 
      anchors[i].disabled = true; 
      break; 
     } 
    } 
</script> 

这样做是找到允许用户创建会议工作区,并禁用它,使他们不能检查的复选框。问题解决了!

使用功能接收器创建一个具有Web功能的功能,该功能接收器会删除激活该功能的当前Web并使其抛出SPException,表明该模板不能使用。然后创建一个Web应用程序或场范围的功能订书机,将上一个功能订书钉装订到您想要阻止的网站定义。在Web应用程序或服务器场上激活该功能。然后,当某人从其中一个网站定义创建网站时,网站将被删除,用户将看到一个显示抛出的SPException文本的错误页面。