如何使用ASP.Net Web应用程序从客户端计算机访问 DSN列表?是否可能?
在本地开发服务器上,它工作正常,我可以实现它但是实时服务器怎么样?现在有很多安全问题,不允许在客户机上访问任何Web应用程序的注册表。
通过asp.net应用程序访问客户端计算机的注册表“ODBC数据源”的任何方法?如果有任何解决方法,请告诉我相关信息吗?
答案 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"
希望对某人有所帮助!!!