Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

191 lines
5.3 KiB

<HTML>
<HEAD>
<TITLE>Dump of the Metabase</TITLE>
</HEAD>
<BODY>
<PRE>
<%
'Metabase Constants
Const METADATA_NO_ATTRIBUTES = &H0
Const METADATA_INHERIT = &H00000001
Const METADATA_PARTIAL_PATH = &H00000002
Const METADATA_SECURE = &H00000004
Const METADATA_REFERENCE = &H00000008
Const METADATA_VOLATILE = &H00000010
Const METADATA_ISINHERITED = &H00000020
Const METADATA_INSERT_PATH = &H00000040
Const IIS_MD_UT_SERVER = 1
Const IIS_MD_UT_FILE = 2
Const IIS_MD_UT_WAM = 100
Const ASP_MD_UT_APP = 101
Const ALL_METADATA = 0
Const DWORD_METADATA = 1
Const STRING_METADATA = 2
Const BINARY_METADATA = 3
Const EXPANDSZ_METADATA = 4
Const MULTISZ_METADATA = 5
'Carrage Return + Line Feed pair
Dim CRLF
CRLF = CHR(13) + CHR(10)
Sub DisplayProperty(ByRef objProperty, ByRef strIndent)
Dim strId
Dim strName
Dim strAttr
Dim intAttr
Dim strUserType
Dim intUserType
Dim strDataType
Dim intDataType
Dim strData
Dim i
Dim arData
Dim bstrData
strId = CStr(objProperty.Id)
strName = objProperty.Name
If strName = "" Then
strName = "*Unknown*"
End If
intAttr = objProperty.Attributes
strAttr = " "
If ((intAttr And METADATA_INHERIT) = METADATA_INHERIT) Then
strAttr = strAttr & "inherit "
End If
If ((intAttr And METADATA_PARTIAL_PATH) = METADATA_PARTIAL_PATH) Then
strAttr = strAttr & "partial_path "
End If
If ((intAttr And METADATA_SECURE) = METADATA_SECURE) Then
strAttr = strAttr & "secure "
End If
If ((intAttr And METADATA_REFERENCE) = METADATA_REFERENCE) Then
strAttr = strAttr & "reference "
End If
If ((intAttr And METADATA_VOLATILE) = METADATA_VOLATILE) Then
strAttr = strAttr & "volatile "
End If
If ((intAttr And METADATA_ISINHERITED) = METADATA_ISINHERITED) Then
strAttr = strAttr & "isinherited "
End If
If ((intAttr And METADATA_INSERT_PATH) = METADATA_INSERT_PATH) Then
strAttr = strAttr & "insert_path "
End If
intUserType = objProperty.UserType
If (intUserType = IIS_MD_UT_SERVER) Then
strUserType = "server"
ElseIf (intUserType = IIS_MD_UT_FILE) Then
strUserType = "file"
ElseIf (intUserType = IIS_MD_UT_WAM) Then
strUserType = "wam"
ElseIf (intUserType = ASP_MD_UT_APP) Then
strUserType = "asp_app"
Else
strUserType = "*unknown*"
End If
intDataType = objProperty.DataType
If (intDataType = ALL_METADATA) Then
strDataType = "*all*"
ElseIf (intDataType = DWORD_METADATA) Then
strDataType = "dword"
ElseIf (intDataType = STRING_METADATA) Then
strDataType = "string"
ElseIf (intDataType = BINARY_METADATA) Then
strDataType = "binary"
ElseIf (intDataType = EXPANDSZ_METADATA) Then
strDataType = "expandsz"
ElseIf (intDataType = MULTISZ_METADATA) Then
strDataType = "multisz"
Else
strDataType = "*unknown*"
End If
'Don't show secure data
If ((intAttr And METADATA_SECURE) = METADATA_SECURE) Then
strData = "*not displayed*"
ElseIf (intDataType = BINARY_METADATA) Then
'Display as a list of bytes
strData = ""
bstrData = objProperty.Data
For i = 1 To LenB(objProperty.Data)
strData = strData & CInt(AscB(MidB(bstrData, i, 1))) & " "
Next
ElseIf (intDataType = MULTISZ_METADATA) Then
arData = objProperty.Data
'Display as a an intented list of strings, one on each line
strData = ""
For i = LBound(arData) To UBound(arData)
strData = strData & CRLF & strIndent & " " & arData(i)
Next
Else
strData = CStr(objProperty.Data)
End If
Response.Write(strIndent & strId & " " & strName & " A:" & strAttr & _
"UT: " & strUserType & " DT: " & strDataType & _
" D: " & StrData & CRLF)
End Sub
Sub DumpKey(ByRef objMetaUtil, ByVal strFullKey, ByVal strKey, ByVal strIndent)
'Display the key
If (strKey = "") then
Response.Write(strIndent & "[METADATA_ROOT]" & CRLF)
Else
Response.Write(strIndent & "[" & strKey & "]" & CRLF)
End if
strIndent = strIndent & " "
'Display the properties
Dim objProperties
Dim objProperty
Set objProperties = objMetaUtil.EnumProperties(strFullKey)
For Each objProperty In objProperties
DisplayProperty objProperty, strIndent
Next
'Display the subkeys
Dim objSubKeys
Dim strSubKey
Dim strFullSubKey
Set objSubKeys = objMetaUtil.EnumKeys(strFullKey)
For Each strSubKey In objSubKeys
If strKey = "" Then
strFullSubKey = strSubKey
Else
strFullSubKey = strFullKey & "/" & strSubKey
End If
DumpKey objMetaUtil, strFullSubKey, strSubKey, strIndent
Next
End Sub
Dim objMetaUtil
'Create the MetaUtil object
Set objMetaUtil = Server.CreateObject("MSWC.MetaUtil.1")
'Dump the entire metabase
DumpKey objMetaUtil, "", "", ""
'Clean up the reference to IIS.MetaUtil
Session.Abandon
%>
</PRE>
</BODY>
</HTML>