Following is the code to check the rights of the users. Following code will show only those sites for which user has at least "Reader" rights. Function CheckRights(ByVal sitePath As String, Byval strUser as string) As Boolean //sitePath contains the site that you retrieved in the code shown above // strUser contains the user for whom you want to check the rights and retrieve sites Try Dim blnStatus As Boolean = False If Not sitePath Is Nothing Or Not sitePath = "" Then Dim rtn As String() = parseURL(sitePath) Dim siteCollection As SPSite siteCollection = New SPSite(sitePath) Dim site As SPWeb = siteCollection.OpenWeb(rtn(0)) Dim allUsers As SPUserCollection = site.Users Dim user As SPUser For Each user In allUsers If user.LoginName.ToUpper = strUser Then Dim allGroups As SPRoleCollection = user.Roles Dim group As SPRole For Each group In allGroups Dim right As Integer right = group.PermissionMask And SPRights.ViewListItems If right = SPRights.ViewListItems Then blnStatus = True Return blnStatus Exit Function End If Next End If Next Return blnStatus End If Catch ex As Exception //Exception handling code here! End Try End Function The function shown above (CheckRights) uses another function called as parseURL(). Following is the code for the parseURL() function: Public Function parseURL(ByVal _fullPath As String) As String() _fullPath = System.Web.HttpUtility.UrlDecode(_fullPath) Dim site As SPSite = New SPSite(_fullPath) Dim web As SPWeb = site.RootWeb Dim webPath As String = _fullPath.Replace(web.Url & "/", "") Dim rtnObject As String() = {"", "", ""} Dim w As SPWeb Dim folderPath As String = "" Dim docLibPath As String = "" Dim i, j As Integer While CType(w, Object) Is Nothing Try w = site.OpenWeb(webPath) Dim s As String = w.ID.ToString '//above will raise the exception too Catch ex As Exception w = Nothing i = webPath.LastIndexOf("/") If i = -1 Then Exit While '//means the end of subsite lookup End If j = webPath.Length webPath = webPath.Remove(i, j - i) End Try End While '//if there was some sub-site object then If Not CType(w, Object) Is Nothing Then folderPath = _fullPath.Substring(_fullPath.IndexOf(webPath) + webPath.Length + 1) If folderPath.IndexOf("/") > 0 Then docLibPath = folderPath.Substring(0, folderPath.IndexOf("/")) folderPath = folderPath.Remove(0, folderPath.IndexOf("/") + 1) End If If docLibPath = webPath Then webPath = "" '_fullPath rtnObject(0) = webPath rtnObject(1) = docLibPath rtnObject(2) = folderPath Else '//there was no sub-site obect was found folderPath = _fullPath.Substring(_fullPath.IndexOf(webPath)) If folderPath.IndexOf("/") > 0 Then docLibPath = folderPath.Substring(0, folderPath.IndexOf("/")) folderPath = folderPath.Remove(0, folderPath.IndexOf("/") + 1) End If If docLibPath = webPath Then webPath = "" '_fullPath rtnObject(0) = webPath rtnObject(1) = docLibPath rtnObject(2) = folderPath End If Return rtnObject End Function ---------------- This code will look complex but it is easy to use. Just supply the arguments and get the results. I could have created a web part as well but i have published the code so that max. number of users can take advantage. Of course, you can create a web part as well. Regards, -SSA