如何从asp.net Web应用程序访问客户机DSN列表(用户或系统)

时间:2014-01-18 06:57:52

标签: asp.net web-applications dsn

如何使用ASP.Net Web应用程序从客户端计算机访问 DSN列表?是否可能?

在本地开发服务器上,它工作正常,我可以实现它但是实时服务器怎么样?现在有很多安全问题,不允许在客户机上访问任何Web应用程序的注册表。

通过asp.net应用程序访问客户端计算机的注册表“ODBC数据源”的任何方法?如果有任何解决方法,请告诉我相关信息吗?

1 个答案:

答案 0 :(得分:0)

无法获得足够的时间来更新此问题的解决方案。我正在遵循一些非常紧凑的时间表。

但我们走了。

首先,

  

在没有任何用户干预的情况下,您无法从客户端计算机访问任何文档/文件。周期。

相当因为安全问题而且非常容易理解。

即使你想要实现它的任何方式,那么VBScript将是最方便的解决方案。

只需发布VBScript代码以从客户端系统读取ODBC DSN列表条目,并将其存储在XML文件中,如果有人对将来感兴趣的话。

option explicit

        const HKLM = &H80000001

        dim keyPath, subKeyPath
        keyPath = "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources"
        subKeyPath = "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources"

        dim reg, subReg

        dim valueNames, types, arrValueNames, arrValueTypes
        dim subValueNames, subArrValueNames, subArrValueTypes

        dim value
        value = "SQL Server"
        dim subValue
        subValue = "server"
        dim i, k

        'Create XML file from this where we'll be storing ODBC Connections Parameters
        dim xmlDoc, objRoot, objName, objServerName, objDBName, objIntro
        Set xmlDoc = _
            CreateObject("Microsoft.XMLDOM")

        'DBDetails element
        Set objRoot = _
            xmlDoc.createElement("DBDetails")  
        xmlDoc.appendChild objRoot

        set reg = getObject( "Winmgmts:root\default:StdRegProv" )

        reg.EnumValues HKLM, keyPath, arrValueNames, arrValueTypes

            For i = 0 to Ubound(arrValueNames)
                valueNames = arrValueNames(i)
                reg.GetStringValue HKLM, keyPath, valueNames, value    

                IF value = "SQL Server" THEN

                    'Create Element for this DB and add values as sub nodes
                        Set objName = _
                            xmlDoc.createElement("DB" & i)
                        objRoot.appendChild objName

                    set subReg = getObject( "Winmgmts:root\default:StdRegProv" )
                    subReg.EnumValues HKLM, "SOFTWARE\ODBC\ODBC.INI\" & valueNames, subArrValueNames, subArrValueTypes

                    for k = 0 to Ubound(subArrValueNames)
                        subValueNames = subArrValueNames(k)
                        reg.GetStringValue HKLM, "SOFTWARE\ODBC\ODBC.INI\" & valueNames, subValueNames, subValue    
                        'Wscript.Echo subValueNames & " -- " & subValue

                        'Server Name Node
                        If subValueNames = "Server" Then
                            Set objServerName = _
                                xmlDoc.createElement("ServerName")
                            objServerName.Text = subValue
                            objName.appendChild objServerName
                        End If

                        'DB Name Node
                        If subValueNames = "Database" Then
                            Set objDBName = _
                                xmlDoc.createElement("DatabaseName")
                            objDBName.Text = subValue
                            objName.appendChild objDBName
                        End If
                    Next
                End If
            Next

            Set objIntro = _
                xmlDoc.createProcessingInstruction _
                ("xml","version='1.0'")  
            xmlDoc.insertBefore _
                objIntro,xmlDoc.childNodes(0)


            If(WScript.CreateObject("Scripting.FileSystemObject").FolderExists("C:\TravcomTouch") = False) Then
                WScript.CreateObject("Scripting.FileSystemObject").CreateFolder("C:\TravcomTouch")
            End If
            xmlDoc.Save "C:\Test\ODBCDBDetails.xml"

希望对某人有所帮助!!!