mirror of https://github.com/tongzx/nt5src
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.
378 lines
10 KiB
378 lines
10 KiB
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
|