VERSION 5.00 Begin VB.Form frmMetaData Caption = "Edit" ClientHeight = 4650 ClientLeft = 60 ClientTop = 345 ClientWidth = 5940 LinkTopic = "Form1" ScaleHeight = 4650 ScaleWidth = 5940 StartUpPosition = 3 'Windows Default Begin VB.CommandButton Cancel Cancel = -1 'True Caption = "Cancel" Height = 495 Left = 4560 TabIndex = 17 Top = 4080 Width = 1095 End Begin VB.CommandButton OK Caption = "OK" Default = -1 'True Height = 495 Left = 3120 TabIndex = 16 Top = 4080 Width = 1095 End Begin VB.CheckBox CheckRefAttr Caption = "By Reference" Height = 375 Left = 2760 TabIndex = 15 Top = 1920 Width = 3255 End Begin VB.CheckBox CheckSecureAttr Caption = "Secure" Height = 375 Left = 2760 TabIndex = 14 Top = 1440 Width = 3255 End Begin VB.CheckBox CheckInheritAttr Caption = "Inherited" Height = 375 Left = 2760 TabIndex = 13 Top = 960 Width = 3015 End Begin VB.TextBox UserTypeLabel Height = 375 Left = 3600 TabIndex = 11 Text = "Text3" Top = 360 Width = 2295 End Begin VB.TextBox StringLabel Height = 375 Left = 720 TabIndex = 9 Text = "Text1" Top = 2880 Width = 5055 End Begin VB.TextBox DwordHexLabel Enabled = 0 'False Height = 375 Left = 720 TabIndex = 5 Text = "Text2" Top = 3600 Width = 2295 End Begin VB.TextBox DwordDecLabel Height = 375 Left = 720 TabIndex = 4 Text = "Text1" Top = 2880 Width = 2295 End Begin VB.OptionButton RadioBinary Caption = "Binary" Enabled = 0 'False Height = 375 Left = 360 TabIndex = 3 Top = 2160 Width = 1935 End Begin VB.OptionButton RadioMultiSz Caption = "Multi-String" Enabled = 0 'False Height = 375 Left = 360 TabIndex = 2 Top = 1680 Width = 1935 End Begin VB.OptionButton RadioString Caption = "String" Enabled = 0 'False Height = 375 Left = 360 TabIndex = 1 Top = 1200 Width = 1935 End Begin VB.OptionButton RadioDword Caption = "DWORD" Enabled = 0 'False Height = 375 Left = 360 TabIndex = 0 Top = 720 Width = 1935 End Begin VB.Frame Frame1 Caption = "Data Type" Height = 2415 Left = 120 TabIndex = 10 Top = 240 Width = 2415 End Begin VB.Label LabelUserType Caption = "User Type" Height = 375 Left = 2760 TabIndex = 12 Top = 360 Width = 1215 End Begin VB.Label LabelString Caption = "String" Height = 255 Left = 120 TabIndex = 8 Top = 2880 Width = 855 End Begin VB.Label LabelHex Caption = "Hex" Height = 375 Left = 120 TabIndex = 7 Top = 3600 Width = 615 End Begin VB.Label LabelDecimal Caption = "Decimal" Height = 255 Left = 120 TabIndex = 6 Top = 2880 Width = 615 End End Attribute VB_Name = "frmMetaData" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Private Path As String ' Path of the item Private ID As Long ' Metabase property ID Option Explicit Public Sub SetData(strPath As String, strItem As String) Dim mb As IMSMetaBase Set mb = CreateObject("IISAdmin.Object") Dim key As IMSMetaKey Dim NewHandle As Long Dim NullPath() As Byte Dim bytePath() As Byte Dim MetaData As IMSMetaDataItem Dim NewDataValue As Long ID = Val(strItem) Path = strPath ' Open the selected node NullPath = StrConv("" & Chr(0), vbFromUnicode) Debug.Print ("Showing " & strPath) Err.Clear bytePath = StrConv(strPath & Chr(0), vbFromUnicode) Set key = mb.OpenKey(1, 100, bytePath) Set MetaData = key.DataItem If (Err.Number <> 0) Then Debug.Print ("Open Meta Object Error Code = " & Err.Number) Err.Clear Exit Sub End If ' Enumerate the properties on this node MetaData.UserType = 0 MetaData.DataType = 0 MetaData.Attributes = 0 MetaData.Identifier = ID key.GetData MetaData 'mb.AutoADMGetMetaData NewHandle, NullPath, MetaData If (Err.Number <> 0) Then MsgBox "GetMetaData Error Code = " & Err.Number & " (" & Err.Description & ")" Err.Clear GoTo CloseMb End If strItem = MetaData.Identifier ' Add the user type If (MetaData.UserType = 1) Then UserTypeLabel.Text = "IIS_MD_UT_SERVER" ElseIf (MetaData.UserType = 2) Then UserTypeLabel.Text = "IIS_MD_UT_FILE" Else UserTypeLabel.Text = Str(MetaData.UserType) End If ' Do the appropriate datatype conversion NewDataValue = MetaData.DataType If (NewDataValue = 1) Then RadioDword.Value = True DwordDecLabel.Text = MetaData.Value DwordHexLabel.Text = Hex(MetaData.Value) ' Hide the string control and move it to the back LabelString.Visible = False StringLabel.Visible = False LabelString.ZOrder (1) ElseIf (NewDataValue = 2) Then Dim j As Long Dim tmpStr As String RadioString.Value = True j = 0 tmpStr = "" Do While (MetaData.Value(j) <> 0) tmpStr = tmpStr & Chr(MetaData.Value(j)) j = j + 1 Loop StringLabel.Text = tmpStr ' Hide the DWORD controls DwordDecLabel.Visible = False DwordDecLabel.ZOrder (1) LabelDecimal.ZOrder (1) DwordHexLabel.Visible = False LabelHex.Visible = False LabelDecimal.Visible = False End If ' Set the attributes checkboxes If MetaData.Attributes And 1 Then CheckInheritAttr.Value = Checked Else CheckInheritAttr.Value = Unchecked End If If MetaData.Attributes And 4 Then CheckSecureAttr.Value = Checked Else CheckSecureAttr.Value = Unchecked End If If MetaData.Attributes And 8 Then CheckRefAttr.Value = Checked Else CheckRefAttr.Value = Unchecked End If CloseMb: End Sub Private Sub Cancel_Click() Unload Me End Sub Private Sub OK_Click() Dim mb As MSAdmin Set mb = CreateObject("IISAdmin.Object") Dim key As IMSMetaKey Dim NewHandle As Long Dim NullPath() As Byte Dim bytePath() As Byte Dim MetaData As IMSMetaDataItem Dim NewDataValue As Long ' Open the selected node NullPath = StrConv("" & Chr(0), vbFromUnicode) Err.Clear bytePath = StrConv(Path & Chr(0), vbFromUnicode) Set key = mb.OpenKey(2, , bytePath) If (Err.Number <> 0) Then Debug.Print ("Open Meta Object Error Code = " & Err.Number) Err.Clear Exit Sub End If Set MetaData = key.DataItem MetaData.Identifier = ID ' Add the user type If (UserTypeLabel.Text = "IIS_MD_UT_SERVER") Then MetaData.UserType = 1 ElseIf UserTypeLabel.Text = "IIS_MD_UT_FILE" Then MetaData.UserType = 2 Else MetaData.UserType = Val(UserTypeLabel.Text) End If ' Do the appropriate datatype conversion Dim Value As Long If (RadioDword.Value = True) Then MetaData.DataType = 1 Value = Val(DwordDecLabel.Text) MetaData.Value = Value 'Val(DwordDecLabel.Text) ElseIf (RadioString.Value = True) Then bytePath = StrConv(StringLabel.Text & Chr(0), vbFromUnicode) MetaData.DataType = 2 MetaData.Value = bytePath Else MsgBox ("Type is not supported") End If ' Set the attributes checkboxes MetaData.Attributes = 0 If (CheckInheritAttr.Value = Checked) Then MetaData.Attributes = MetaData.Attributes + 1 End If If (CheckSecureAttr.Value = Checked) Then MetaData.Attributes = MetaData.Attributes + 4 End If If (CheckRefAttr.Value = Checked) Then MetaData.Attributes = MetaData.Attributes + 8 End If key.SetData MetaData If (Err.Number <> 0) Then MsgBox "GetMetaData Error Code = " & Err.Number & " (" & Err.Description & ")" Err.Clear GoTo CloseMb End If CloseMb: Unload Me ' Refresh the listbox and dismiss the dialog End Sub