Windows SharePoint Services 3.0 and Microsoft Office SharePoint Server 2007 contain a lot of different settings. These are settings of various services, connection strings for databases, indexing parameters, and administrative settings – this list can be continued for a long time.
Storage of majority of SharePoint settings is realized very smartly – developers used the opportunity that .NET objects can be easily serialized and deserialized. Data stream obtained after serialization is saved in the Objectstable of the configurational database (as a rule, it`s name starts with SharePoint_Config__). If restoration of saved object condition is necessary, saved data is read from the mentioned table and used for deserialization.
All types saved in the configurational database are inherited from the type Microsoft.SharePoint.Administration.SPPersistedObject. These types can be developed by either the Microsoft Company itself, or by any other third-party developers.
Persisted objects form a hierarchy. The base of this hierarchy is an object of type SPFarm – SharePoint farm object. It is simple to make sure of that by selecting objects with Id = ParentId from the table. Because of this, hierarchy of persisted objects always can be presented similarly to Windows registry or hierarchy of Active Directory objects.
In the browser, all objects inherited from SPPersistedObject are marked with icon .
Due to special importance of this object type, HarePoint Explorer for SharePoint offers three modes of operations with them:
As first and second modes needn`t to be commented, let us pay attention to the third mode. It is very important, since, as a rule, it is used when developing solutions for SharePoint.
Suppose that you need to know exactly which folder is used for storing log-files. By performing a simple search in documentation for Windows SharePoint Services 3.0 included in Windows SharePoint Services 3.0 SDK, we discover that path to folder of log-files is kept in property LogLocation of class SPDiagnosticsService. There we also find that class SPDiagnosticsServices has the following constructor:
public SPDiagnosticsService ( string name, SPFarm parent )
Such constructor has all persisted objects of SharePoint. Since there can be only one object SPDiagnosticsServices in SharePoint farm, parameter name is not needed for it`s creation – it can equal to "". Second parameter – parent – is absolutely necessary; it can be taken from object browser by flagging object of type SPFarm.
After flagging object of type SPFarm and creating new script window, the program generates the following script code:
C# using System; using System.Collections.Generic; using System.Diagnostics; using System.Text; using MAPILab.SharePoint.Explorer.CodeForm; using MAPILab.SharePoint.Explorer.Utilities.ScriptRunner; public class Tester { static void Main( Microsoft.SharePoint.Administration.SPFarm sPFarmNameSharePoint1 ,MAPILab.SharePoint.Explorer.CodeForm.MLCodeForm thisForm ,MAPILab.SharePoint.Explorer.Utilities.ScriptRunner.MLBrowser browser ) { // Output browser configuration //browser.Text = "Browser window"; //browser.DisplayMode = MAPILab.SharePoint.Explorer.Utilities.ScriptRunner.DisplayMode.Expanded; browser.ReturnValue = null; } }
Visual Basic Imports System Imports System.Collections.Generic Imports System.Diagnostics Imports System.Text Imports MAPILab.SharePoint.Explorer.CodeForm Imports MAPILab.SharePoint.Explorer.Utilities.ScriptRunner Public Class Tester Shared Sub Main(ByVal sPFarmNameSharePoint1 As Microsoft.SharePoint.Administration.SPFarm, ByVal thisForm As MAPILab.SharePoint.Explorer.CodeForm.MLCodeForm, ByVal browser As MAPILab.SharePoint.Explorer.Utilities.ScriptRunner.MLBrowser) ' Output browser configuration 'browser.Text = "Browser window" 'browser.DisplayMode = MAPILab.SharePoint.Explorer.Utilities.ScriptRunner.DisplayMode.Expanded browser.ReturnValue = Nothing End Sub End Class
Modify it so that, when executing it, object SPDiagnosticsServices is created, value of property LogLocation is place in output box, and method main will return created object for further investigation:
C# using System; using System.Collections.Generic; using System.Diagnostics; using System.Text; using MAPILab.SharePoint.Explorer.CodeForm; using MAPILab.SharePoint.Explorer.Utilities.ScriptRunner; using Microsoft.SharePoint.Administration; public class Tester { static void Main( Microsoft.SharePoint.Administration.SPFarm sPFarmNameSharePoint1 ,MAPILab.SharePoint.Explorer.CodeForm.MLCodeForm thisForm ,MAPILab.SharePoint.Explorer.Utilities.ScriptRunner.MLBrowser browser ) { // Create new SPDiagnosticsService object SPDiagnosticsService diagService = new SPDiagnosticsService("", sPFarmNameSharePoint1); // Output log-files location Debug.Print("Log-files store: {0}", diagService.LogLocation); // Output browser configuration //browser.Text = "Browser window"; //browser.DisplayMode = MAPILab.SharePoint.Explorer.Utilities.ScriptRunner.DisplayMode.Expanded; browser.ReturnValue = diagService; } }
Visual Basic Imports System Imports System.Collections.Generic Imports System.Diagnostics Imports System.Text Imports MAPILab.SharePoint.Explorer.CodeForm Imports MAPILab.SharePoint.Explorer.Utilities.ScriptRunner Imports Microsoft.SharePoint.Administration Public Class Tester Shared Sub Main(ByVal sPFarmNameSharePoint1 As Microsoft.SharePoint.Administration.SPFarm, ByVal thisForm As MAPILab.SharePoint.Explorer.CodeForm.MLCodeForm, ByVal browser As MAPILab.SharePoint.Explorer.Utilities.ScriptRunner.MLBrowser) ' Create new SPDiagnosticsService object Dim diagService As SPDiagnosticsService = new SPDiagnosticsService("", sPFarmNameSharePoint1) ' Output log-files location Debug.Print("Log-files store: {0}", diagService.LogLocation) ' Output browser configuration 'browser.Text = "Browser window" 'browser.DisplayMode = MAPILab.SharePoint.Explorer.Utilities.ScriptRunner.DisplayMode.Expanded browser.ReturnValue = diagService End Sub End Class
As a result of script execution, the following information will be placed in output box
Running method main... Log-files store: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\LOGS\ Compile complete -- 0 errors, 0 warnings Operation complete!
After that, the object diagService itself will be shown in new browser window.