给网站添加一个注册表 之 “类的实现”

原创 2004年08月01日 23:43:00

<%
'------------------------------------------------------------------------------------
'类名:RegistryObject 网页信息注册表类
'作者:张少棠 (Tonton)
'邮箱:tonton@yeah.net
'时间:2004年8月1日
'说明:模仿WINDOWS中注册表的方式,结合XML与ASP技术,给网站添加一个专用的“注册表”类。
'网址:http://blog.csdn.net/tonton/archive/2004/08/01/58198.aspx
'版权:读者可以把本程序使用于任何用途,如要刊登、转载,请保留以上版权信息!
'------------------------------------------------------------------------------------

Const NODE_ELEMENT = 1
Const NODE_TEXT = 3

Class RegistryObject
 
    Private mDom
 
    Public Path          '注册表路径
    Public Encoding      '注册表编码
    Public DefaultValue  '在读取键值时,如果子键不存在而返回的默认值
 
    Private Sub Class_Initialize()
        DefaultValue = Empty
        Encoding = "gb2312"
        Set mDom = Nothing
    End Sub
   
    Private Sub Class_Terminate()
        Set mDom = Nothing
    End Sub
   
    Public Function NewDom()
        Set NewDom = Server.CreateObject("Microsoft.XMLDOM")
    End Function
   
    Private Property Get Dom()
        Dim Nde
        If mDom Is Nothing Then
            Set mDom = NewDom()
            mDom.async = False
            mDom.Load Path
           
            If mDom.parseError.errorCode = &H800C0006 Then      '文件未找到
                Initial
            ElseIf mDom.parseError <> 0 Then
                Exit Property
            End If
        End If
       
        Set Dom = mDom
    End Property
   
    Public Function Initial()
        Dim Nde
        Set mDom = NewDom()
        With mDom
            Set Nde = .createProcessingInstruction("xml", "version='1.0' encoding='" & Encoding & "'")
            .appendChild (Nde)
            Set Nde = .createElement("Registry")
            .appendChild (Nde)
        End With
        mDom.Save Path
    End Function
   
    Public Function CreateChannel(Channel)
        With Dom
            Set CreateChannel = .selectSingleNode("//" & Channel)
            If CreateChannel Is Nothing Then
                Set CreateChannel = .createNode(NODE_ELEMENT, Channel, "")
                .documentElement.appendChild (CreateChannel)
                .Save Path
            End If
        End With
    End Function
   
    Public Function GetAllChannels()
        Dim Result
        Dim Nde, i
        With Dom
            With .documentElement.childNodes
                If .length = 0 Then
                    Result = Split("", 0)
                Else
                    ReDim Result(.length - 1)
                    For i = 0 To .length - 1
                        Result(i) = .Item(i).nodeName
                    Next
                End If
            End With
        End With
        GetAllChannels = Result
    End Function
   
    Public Function DeleteChannel(Channel)
        Dim Selection
        With Dom
            Set Selection = .selectNodes("//" & Channel)
            Selection.RemoveAll
            .Save Path
        End With
    End Function
   
    Public Function CreateSection(Channel, Section)
        Dim Nde
        With Dom
            Set Nde = .selectSingleNode("//" & Channel & "/" & Section)
            If Nde Is Nothing Then
                Set Nde = .selectSingleNode("//" & Channel)
                If Nde Is Nothing Then
                    Set Nde = .createNode(NODE_ELEMENT, Channel, "")
                    .documentElement.appendChild (Nde)
                End If
               
                Set CreateSection = .createNode(NODE_ELEMENT, Section, "")
                Nde.appendChild (CreateSection)
               
                .Save Path
            End If
        End With
    End Function
   
    Public Function GetAllSections(Channel)
        Dim Result
        Dim Nde, i
        With Dom
            Set Nde = .selectSingleNode("//" & Channel)
            If Not Nde Is Nothing Then
                With Nde.childNodes
                    If .length = 0 Then
                        Result = Split("", 0)
                    Else
                        ReDim Result(.length - 1)
                        For i = 0 To .length - 1
                            Result(i) = .Item(i).nodeName
                        Next
                    End If
                End With
            Else
                Result = Split("", 0)
            End If
        End With
        GetAllSections = Result
    End Function
   
    Public Function ClearAllSections(Channel)
        Dim Selection
        With Dom
            Set Selection = .selectNodes("//" & Channel)
            Selection.RemoveAll
            .Save Path
        End With
    End Function
   
    Public Function DeleteSection(Channel, Section)
        Dim Selection
        With Dom
            Set Selection = .selectNodes("//" & Channel & "/" & Section)
            Selection.RemoveAll
            .Save Path
        End With
    End Function
   
    Public Function GetAllKeys(Channel, Section)
        Dim Result
        Dim Nde, i
        With Dom
            Set Nde = .selectSingleNode("//" & Channel & "/" & Section)
   If Not Nde Is Nothing Then
    With Nde.childNodes
     If .length = 0 Then
      Result = Split("", 0)
     Else
      ReDim Result(.length - 1)
      For i = 0 To .length - 1
       Result(i) = .Item(i).nodeName
      Next
     End If
    End With
   Else
    Result=Split("", 0)
   End If
        End With
        GetAllKeys = Result
    End Function
   
    Public Sub SaveValue(Channel, Section, Key, Value)
        Dim Nde, Nde2, ItemNode
        With Dom
            Set ItemNode = .selectSingleNode("//" & Channel & "/" & Section & "/" & Key)
            If ItemNode Is Nothing Then
                Set Nde = .selectSingleNode("//" & Channel)
                If Nde Is Nothing Then
                    Set Nde = .createNode(NODE_ELEMENT, Channel, "")
                    .documentElement.appendChild (Nde)
                End If
               
                Set Nde2 = Nde.selectSingleNode("//" & Section)
                If Nde2 Is Nothing Then
                    Set Nde2 = .createNode(NODE_ELEMENT, Section, "")
                    Nde.appendChild (Nde2)
                End If
               
                Set ItemNode = .createNode(NODE_ELEMENT, Key, "")
                Nde2.appendChild (ItemNode)
            End If
            ItemNode.Text = Value
           
            .Save Path
        End With
    End Sub
   
    Public Function ReadValue(Channel, Section, Key)
        Dim Nde
        With Dom
            Set Nde = .selectSingleNode("//" & Channel & "/" & Section & "/" & Key)
            If Nde Is Nothing Then
                ReadValue = DefaultValue
            Else
                ReadValue = Nde.Text
            End If
        End With
    End Function
   
    Public Function GetAllValues(Channel, Section)
        Dim Result
        Dim Nde, i
        With Dom
            Set Nde = .selectSingleNode("//" & Channel & "/" & Section)
            If Not Nde Is Nothing Then
                With Nde.childNodes
                    If .length = 0 Then
                        Result = Split("", 0)
                    Else
                        ReDim Result(.length - 1)
                        For i = 0 To .length - 1
       Set Result(i)=New RegistryKey
       Result(i).Name=.Item(i).nodeName
       Result(i).Value=.Item(i).Text
                        Next
                    End If
                End With
            Else
                Result = Split("", 0)
            End If
        End With
        GetAllValues = Result
    End Function
End Class

Class RegistryKey
 Public Name
 Public Value
End Class
%>

jsp学习之路之实现一个用户信息页面并实现跳转到另外一个页面输出用户的相关信息

1.首先,打开MyEclipse工具,新建一个Web Project
  • u012561176
  • u012561176
  • 2014年09月12日 00:03
  • 2205

android—如何添加一个系统服务

c中添加service java添加service前面分析过binder的实现流程,binder的实现包含了java和c++两部分,那么应该如何去添加一个service? c++中添加service...
  • lewif
  • lewif
  • 2016年02月18日 17:33
  • 2006

Java 动态的创建注入代码,注入方法给类或者接口并通过反射调用

java 动态编译代码(在运行阶段动态注入代码)
  • xiyushiyi
  • xiyushiyi
  • 2014年11月24日 15:17
  • 13522

自己写的一个注册表操作类----相当实用

/*------------------------------------ Author: Ted--Nefarian Zhu Date: 2011/08/11 17:30 Ver...
  • littlekathy
  • littlekathy
  • 2011年08月11日 17:33
  • 238

造了一个轮子:注册表键编辑封装->registry类

使用蛮方便的注册表操作封装
  • hh_xj
  • hh_xj
  • 2011年01月05日 16:07
  • 636

在开始菜单添加某网站的按钮的注册表文件

  • 2007年12月02日 00:36
  • 452B
  • 下载

一个VB操作注册表的类.pdf

  • 2007年12月29日 08:48
  • 91KB
  • 下载

myRegistry(读写注册表的一个封装C++类)

  • 2008年10月29日 15:11
  • 16KB
  • 下载

C#操作注册表实现添加/删除可信站点

最近使用C# WebBrowser开发了一个客户端用来做图形展示,由于项目中引用了中央气象台天气信息的网页,出现了脚本加载不了的问题,费了九牛二虎之力才找出解决方法:添加信任站点。参考网上资料写了一个...
  • cuihaiyang
  • cuihaiyang
  • 2011年08月11日 17:06
  • 4646

c# 更改注册表开机启动+mutex(互斥,同一时间同一台电脑只能运行一个程序)

1.更改注册表,使开机启动 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下增加一个键,键值为程序路径即可,代码如...
  • lcawen
  • lcawen
  • 2013年04月12日 12:56
  • 1188
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:给网站添加一个注册表 之 “类的实现”
举报原因:
原因补充:

(最多只允许输入30个字)