Hi All,
I'm trying to do 2 things with the .NET System.DirectoryServices namespace
and have hit a wall. I'm trying to 1. Recurse the metabase looking for all
top-level domains 2. While recursing the metabase determine if someone
has set the logfiledirectory variable within the particular domain, if not
it inherits from the root /LM/W3SVC logfiledirectory value.
This has turned out to be more of a challenge that I expected and there
isn't any examples in the DOCS or on the web. I can go directly against
the metabase with this code snippet below to obtain the proeprty.
However trying to recurse the metabase is another challenge. There is a
code snippet below that was a vbscript file at one point that does recurses
but doesn't use System.DirectoryServices namespace. I tried bring back a
collection of the /LM/W3SVC which the .NET doc's say but its NULL.
However the server I was going after had 6 top-level domains. The biggest
challenge is trying to use the DirectoryEntry object to recurse, it seems to
be ok using traditional ADSI. Here is the code I've been working with,
appreciate any assistance someone has
Here is C# code that gets one property.
using System;
using System.DirectoryServices;
//our custom namespace
namespace myNamespace
{
//our custom class
public class domain
{
public domain(string logpath)
{
logPath = logpath;
}
//some member variables
private string logPath;
public string LogPath
{
get {return logPath;}
set {logPath=value;}
}
public string C(string domainName, string logPath)
{
string strPath = "IIS://TopLevelDomainName/" + logPath;
System.DirectoryServices.DirectoryEntry ds = new DirectoryEntry(strPath);
object s = ds.Properties["LogFileDirectory"].Value;
return s.ToString();
}
VB.NET winform I wrote with a button event to try recurse through the
metabase
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim entry As DirectoryEntry = New
DirectoryEntry("IIS://localhost/W3SVC/")
RecurseObj(entry)
End Sub
Sub RecurseObj(ByVal IISObj)
Dim oSubDir, fRecurse, oTemp
'On Error Resume Next
fRecurse = False
Select Case IISObj.Class
Case "IIsWebFile"
' SetMappings(IISObj)
Case "IIsWebServer", "IIsWebDirectory", "IIsWebVirtualDir",
"IIsWebService"
SetMappings(IISObj)
fRecurse = True
End Select
If fRecurse Then
For Each oSubDir In IISObj
RecurseObj(oSubDir)
Next
End If
End Sub
Sub SetMappings(ByVal IISObj)
Dim entry As DirectoryEntry = New
DirectoryEntry("IIS://localhost/W3SVC/3")
Console.Write(entry.Properties("ServerComment").Value & vbCrLf)
End Sub }}
* ----------------------------------------- *
* Steve Schofield
* [EMAIL PROTECTED]
*
* Microsoft MVP - ASP.NET
* http://www.aspfree.com
* ----------------------------------------- *
You can read messages from the Advanced DOTNET archive, unsubscribe from Advanced
DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.