您现在的位置: 军旅同心 >> 读书赏析 >> 学习园地 >> 电脑网络 >> 技术文章 >> 文章正文
在ASP页里面注册DLL的VBScript CLASS
作者:采集员 文章来源:来源于网络 点击数: 更新时间:2005-9-10 14:20:02
-----------------------------------------------ROOT1---------------------------------------

*******************************************************************************************
*使用本CLASS可以管理并在ASP页里面注册你的DLL
*本CLASS在WIN 2K上测试通过
*注:使用本CLASS需要先建立一个XML文件。文件如下.打开记事本将如下3行存为*.XML文件
*
*    <?xml version="1.0" encoding="gb2312" standalone="yes"?>
*    <Dll列表>
*    </Dll列表>
*
*------------------------------------------------------------------------------------------
*范例:
*    dim objRegsvr32
*    set objRegsvr32 = new Regsvr32
*    with objRegsvr32
*        if .LoadXml("../MyDll.xml") then
*            call Response.Write("XML文件加载错误")
*            set objRegsvr32 = nothing
*            Response.End
*        end if
*        select case .AddNode("F:webcw31072dll estMyClass.dll" , true) '添加新条目并注册DLL
*            case 1
*                call Response.Write("条目已经添加进XML文件!并成功注册DLL啦!")
*            case 0
*                call Response.Write("条目已经添加进XML文件!但注册DLL时失败!")
*            case -1
*                call Response.Write("XML文件里已经有该条目!该DLL也已经注册的了!")
*        end select
*        ..........................
*    end with
*            
*    '本CLASS非常简单,里面还有些方法,我就不举例了,看看就知道了。日后你可以打开
*    '该XML文件看你曾经注册过和待注册的DLL列表。
*    'XML文件里每个条目如下:<Dll 是否已经注册="1">F:webcw31072dll estMyClass.dll</Dll>
*    'F:webcw31072dll estMyClass.dll就是你DLL文件的路径
*    '是否已经注册="1"就是该DLL已经注册过,=“0”就是还没有注册呢!
*******************************************************************************************

Class Regsvr32

    private s_objXml
    private s_objNodeRoot
    private s_strXmlPath
    private s_strAttributeName
    
    '------------------------------------
    '目的:    加载DLL配置xml文件
    '参数:    XML文件地址
    '返回:    加载失败就返回TRUE
    '------------------------------------    
    public function LoadXml(strPath)
        set s_objXml = CreateObject("MSXML2.DOMdocument")
        s_objXml.async = false
        s_objXml.load(strPath)
        if s_objXml.parseError.errorCode <> 0 then
            set s_objXml = nothing
            LoadXml = true
            exit function
        end if
        set s_objNodeRoot = s_objXml.documentElement
        s_strXmlPath = strPath
        s_strAttributeName = "是否已经注册"
    end function
    
    '---------------------------------------------
    '目的:    添加一个DLL项目
    '参数:    strPath:    DLL文件地址
    '          blnReg:    添加后是否将其注册
    '返回:    如果要求添加后注册,注册成功就返回1,注册失败返回0,已经有该项目并注过册就返回-1
    '---------------------------------------------
    public function AddNode(strPath , blnReg)
        dim objNewNode
        dim strStart
        dim objNode
        strStart = "0"
        set objNode = SelectNode(strPath)
        if objNode is nothing then
            if Reg(strPath , true) then
                strStart = "1"
                AddNode = true
            else
                AddNode = false
            end if
            set objNewNode = s_objXml.createElement("Dll")
            call objNewNode.setAttribute(s_strAttributeName , strStart)
            objNewNode.Text = strPath
            call s_objNodeRoot.appendChild(objNewNode)
            call s_objXml.save(s_strXmlPath)
        else
            if blnReg then
                if objNode.Attributes.getNamedItem(s_strAttributeName).nodeValue = "1" then
                    AddNode = true
                else
                    if Reg(strPath , true) then
                        objNode.Attributes.getNamedItem(s_strAttributeName).nodeValue = "1"
                        call s_objXml.save(s_strXmlPath)
                    else
                        AddNode = false
                    end if
                end if
             else
                 AddNode = false
             end if
        end if
    end function
    
    '----------------------------------------
    '目的:    删除所有已经注册,或者没注册的节点
    '参数:    blnStart:    0=未注册的,1=已经注册的
    '返回:    执行了删除操作就返回TRUE,否则返回FALSE
    '----------------------------------------
    public function ReAllNode(byVal blnStart)
        dim objNode
        dim blnIsChange
        blnStart = CStr(blnStart)
        for each objNode in s_objNodeRoot.childNodes
            if objNode.Attributes.getNamedItem(s_strAttributeName).nodeValue = blnStart then
                call s_objNodeRoot.removeChild(objNode)
                b

[1] [2] 下一页


 
免责声明:作品版权归所属媒体与作者所有!!本站刊载此文不代表同意其说法或描述,仅为提供更多信息。如果您认为我们侵犯了您的版权,请告知!本站立即删除。有异议请联系我们。
文章录入:烟灰缸    责任编辑:烟灰缸 
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 |