View MOSS list in datasheet view

One of the powerful things about WSS / MOSS is editing list in datasheet view.   It’s like working with a spreadsheet except it’s on the site.   I recently got a new laptop and couldn’t do this.  The error listed below came up.

“The list cannot be displayed in Datasheet view for one or more of the following reasons: A datasheet component compatible with Windows SharePoint Services is not installed, your browser does not support ActiveX controls, or support for ActiveX controls is disabled. 

My laptop has IE 7.0, Windows XP, Office 2003 professional, OneNote 2007, Visio 2007.    I hadn’t tested this functionality before installing the 2007 products.   After I ran a repair on Office 2003, this resolved my issue.   Hope this helps others.

PS: Many posts mention upgrading to 2007 resolves the issue.   From what I can determine, the COM entries to this feature gets updated when installing 2007 based products while mixing with Office 2003.


MOSS, multiple forests and one-way trusts

I ran into an issue when working on a MOSS farm with the December update for MOSS.   Before applying the update,  I was running a basic x64 install with SP1.  The farm with MOSS had a one-way trust to a user-based domain.  The user-based domain didn’t trust the resource domain where MOSS was installed.   I needed to use the syntax of stsadm -o setproperty -pn peoplepicker-searchadforsts -pv “,Username,Password” as the article mentioned below since I had a one-way trust.

This article also helped with the syntax.

I strongly suggest you test this in a sandbox environment before applying or attempting to do your production environment. 

Hope this helps.

530 User cannot log in, home directory inaccessible, FTP 7.0 user isolation and Process Monitor

I was trying to reproduce an issue posted on the forums @ (   As with many posts, I mention use Process Monitor.  Here is a perfect example. 

  • Find out what PID (process ID) in task manager

  • Open Process Monitor and isolate the PID (This helps cutdown on noise)

  • Reproduce the issue. (In my case, notice the highlighted line, it’s looking for c:domainsftprootssuser1).  I have the FTP 7.0 service running on a domain controller.  It means I need to create the SS (NetBIOS name) as a virtual directory for user isolation.  I don’t recommend running FTP on a domain controller, so this is for demo purposes.  PS: Once I added the SS virtual directory, I was able to use FTP user isolation.


Here is an article how to setup FTP 7.0 

I thank Mark for creating Process Monitor!


Steve Schofield
Microsoft MVP – IIS


Bob Fox Backup and Restore Video

I’m coming up to speed on MOSS and Bob Fox has a straight-forward 20 minute video on backup and restore for MOSS.   He shows how use stsadm and the UI.    It was a good overview for those coming up to speed on MOSS.

Here is another link with great information on Technet.


More cool stuff from IIS team – The Dynamic IP Restrictions module (beta)

Hot off the presses!

The Dynamic IP Restrictions includes these key features:

  • Blocking of IP addresses based on number of concurrent requests – If HTTP client makes many concurrent requests then that client’s IP address gets temporarily blocked.
  • Blocking of IP address based on number of requests over a period of time – If HTTP client makes many requests over short period of time then that client’s IP address gets temporarily blocked.
  • Various deny actions – it is possible to specify what response to return to an HTTP client whose IP address is blocked. The module can return status codes 403 and 404 or just drop the HTTP connection and do not return any response.
  • Logging of denied requests – all dynamically denied requests can be logged into a W3C formatted log file.
  • Displaying currently blocked IP addresses – a list of currently blocked IP addresses can be obtained by using IIS Manager or by using IIS RSCA API’s.
  • IPv6 – the module fully supports IPv6 addresses.
In additions to these features, the Dynamic IP Restrictions for IIS 7.0 provides the same functionality that exists in IIS 7.0 built-in IPv4 and Domain Restrictions. Because of that the Dynamic IP Restrictions is provided as a replacement for IPv4 and Domain Restrictions.More informationModule walkthrough: forum:

Powershell, Sharepoint and granting SPBasePermissions

Over the last few months, I’ve been learning how to automate Sharepoint installs and perform base configurations.  Between psconfig, stsadm and stsadm extension by Gary LaPoint, I’ve been able to achieve pretty much a scripted install.   Most of the configuration has been just setting up a Sharepoint farm.  I ran into a situation where I needed to create a custom Permission Level in the post configuration section.   This was my first venture into using Powershell and the Microsoft.Sharepoint.dll API.   I’m trying to do everything without having a compiled application. All my scripts are currently using Powershell v1.0.   I ran into a limitation when trying to automate granting the custom Permission level.  I received this error.

Cannot convert value “EnumeratePermissions” to type “System.Int32”. Error: “Value was either too large or too small for an Int32.”

Here is the script I ran using the -bor operator that produced the error. 

$site = new-object Microsoft.SharePoint.SPSite(
$web = $site.OpenWeb()
$perm = new-object Microsoft.SharePoint.SPRoleDefinition
$perm.Name = “Example Permission”
$perm.Description = “Example Permission Mask”
$perm.BasePermissions = [Microsoft.SharePoint.SPBasePermissions]::SPBasePermissions.BrowseDirectories -bor [Microsoft.SharePoint.SPBasePermissions]::ViewPages -bor [Microsoft.SharePoint.SPBasePermissions]::EnumeratePermissions -bor [Microsoft.SharePoint.SPBasePermissions]::BrowseUserInfo -bor [Microsoft.SharePoint.SPBasePermissions]::UseRemoteAPIs -bor [Microsoft.SharePoint.SPBasePermissions]::Open

With assistance from the Powershell Community, they showed me a modified way to do bitmasks in Powershell (bit masks and -bor are limited to 32 bit integer.  Here is the modified code.  The only difference is the bitmask options

$site = new-object Microsoft.SharePoint.SPSite(““)
$web = $site.OpenWeb()
$perm = new-object Microsoft.SharePoint.SPRoleDefinition
$perm.Name = “Example custom Permission”
$perm.Description = “Custom Permission Mask”
$perm.BasePermissions = “BrowseDirectories,ViewPages,EnumeratePermissions,BrowseUserInfo,UseRemoteAPIs,Open,ViewListItems,ViewVersions,OpenItems”

//Grant a domain user to the Example Custom Permission from within a site collection
stsadm -o adduser -url -userlogin DomainUsername -useremail [email protected] -role “Example custom Permission” -username DomainNameUsername

Hope this helps someone.


Steve Schofield
Microsoft MVP – IIS