您的位置:首页网页设计ASP实例 → 在ASP页里面注册DLL的VBScript CLASS

在ASP页里面注册DLL的VBScript CLASS

时间:2004/11/7 3:01:00来源:本站整理作者:蓝点我要评论(0)

-----------------------------------------------ROOT1---------------------------------------



*******************************************************************************************

*使用本CLASS可以管理并在ASP页里面注册你的DLL

*本CLASS在WIN 2K上测试通过

*注:使用本CLASS需要先建立一个XML文件。文件如下.打开记事本将如下3行存为*.XML文件

*

*    

*    

*    


*

*------------------------------------------------------------------------------------------

*范例:

*    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:\web\cw31072\dll\test\MyClass.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文件里每个条目如下:F:\web\cw31072\dll\test\MyClass.dll

*    'F:\web\cw31072\dll\test\MyClass.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)

                blnIsChange = true

            end if

        next

        if blnIsChange then

            ReAllNode = true

            call s_objXml.save(s_strXmlPath)

        else

            ReAllNode = false

        end if     

    end function

    

    '-----------------------------------------

    '目的:    删除某一个节点

    '参数:    节点内容

    '返回:    找不到节点就返回TRUE

    '-----------------------------------------

    public function ReNode(strPath)

        dim objNode

        set objNode = SelectNode(strPath)

        if objNode is nothing then

            ReNode = true

        else

            call s_objNodeRoot.removeChild(objNode)

            call s_objXml.save(s_strXmlPath)

        end if

    end function

    

    

    '-----------------------------------------

    '目的:    寻找某个节点

    '参数:    strPath:   节点内容

    '返回:    找到就返回该节点,找不到就返回nothing

    '-----------------------------------------

    private function SelectNode(ByVal strPath)

        dim objNode

        strPath = UCase(strPath)

        for each objNode in s_objNodeRoot.childNodes

            if UCase(objNode.childNodes.item(0).nodeValue) = strPath then

                Set SelectNode = objNode

                exit function

            end if

        next

        set SelectNode = nothing

    end function

    

    '--------------------------------------------

    '目的:    查看DLL文件列表里某个文件注册状态

    '参数:    该文件路径

    '返回:    1=已经注册

    '          0=未注册

    '          -1=找不到该文件

    '--------------------------------------------

    public function CheckDll(strPath)

        dim objNode

        set objNode = SelectNode(strPath)

        if objNode is nothing then

            CheckDll = -1

        else

            CheckDll = Cint(objNode.Attributes.getNamedItem(s_strAttributeName).nodeValue)

        end if

    end function

    

    '--------------------------------------

    '目的:    将所有未注册的DLL注册

    '返回:    如果有某个DLL注册失败就返回TRUE

    '--------------------------------------

    public function RegAllNode()

        dim objNode

        for each objNode in s_objNodeRoot.childNodes

            if objNode.Attributes.getNamedItem(s_strAttributeName).nodeValue = "0" then

                if Reg(objNode.childNodes.item(0).nodeValue , true) then

                    objNode.Attributes.getNamedItem(s_strAttributeName).nodeValue = 1

                else

                    RegAllNode = true

                end if

            end if

        next

    end function

    

    '-----------------------------------------

    '目的:    注册DLL

    '参数:    strPath:    要注册Dll文件路径

    '          blnLoding:    是否等待注册完成才继续执行程序

    '返回:    如果blnLoging=TRUE,注册成功就返回True

    '-----------------------------------------

    private function Reg(strPath , blnLoding)    

        dim objShell

        set objShell = CreateObject("Wscript.Shell")

        if objShell.Run("regsvr32.exe /s " & strPath , , blnLoding) = 0 then

            Reg = true

        end if

        set objShell = nothing

    end function

    

End Class


相关阅读 Mac访问Windows共享文件夹Windows 7正版系统验证方法windows 8.1系统版本号查看方法Windows 8.1系统电话激活时无法输入微软返回代码解决方法Windows 8如何调整屏幕分辨率windows8.1磁盘占用100%解决方法Mac双系统如何删除Boot Camp安装的Windows分区Apple教你如何在Mac 上运行 Windows

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 迅雷新手完全入门手册 asp下面javascript上传图片限制格式大小方法告诉大家网页弹出窗口应用总结ASP常见错误类型大全asp常见错误分析和解决办法

人气排行 总是弹出visual studio 实时调试器 三种解决SQLSERVER存储过程及调用详解Asp获取真实IP地址ASP中连接Mssql的几种方法一个简单好用的UBB编辑器(含代码)如何用Split将字符串转换为数组并获取数组下ASP防止表单重复提交的办法告诉你免费的简单聊天室源代码