我有一些VB代码连接到这台Windows机器上的DSN(数据源)设置。代码如下:
Dim myConnection As OdbcConnection = New OdbcConnection()
myConnection.ConnectionString = "DSN=MYALERTS"
它仍然有用&连接,但是设置它的用户不再是。我需要查看/编辑它,但当我进入Windows中的“ODBC数据源管理器”时,我看不到列出的DSN。我认为这是因为我是我自己的用户。即使在“系统DSN”选项卡下,列表也是空白的。
是否有Windows命令(甚至VB代码)可以查看此Windows 7计算机上的所有DSN?
答案 0 :(得分:3)
我能够在注册表中查看所有DSN:
HKEY_LOCAL_MACHINE->软件 - > ODBC的> ODBC.INI
答案 1 :(得分:3)
这将从Windows注册表中打印用户和系统 DSN(数据源名称)。
Module ModuleDsn
Public Enum DataSourceType
System
User
End Enum
Sub Main()
Dim SU As SortedList = GetDataSourceNames(DataSourceType.User)
Dim SS As SortedList = GetDataSourceNames(DataSourceType.System)
Dim count As Integer = SU.Count + SS.Count
Dim mKeys As [String]() = New String(count - 1) {}
SU.Keys.CopyTo(mKeys, 0)
SS.Keys.CopyTo(mKeys, SU.Keys.Count)
For i As Integer = 0 To mKeys.Length - 1
Console.WriteLine(mKeys(i))
Next
End Sub
Public Function GetDataSourceNames(ByVal dsnType As DataSourceType) As System.Collections.SortedList
Dim dsnList As New System.Collections.SortedList()
Dim reg As Microsoft.Win32.RegistryKey = Nothing
If dsnType = DataSourceType.User Then
reg = (Microsoft.Win32.Registry.CurrentUser).OpenSubKey("Software")
Else
reg = (Microsoft.Win32.Registry.LocalMachine).OpenSubKey("Software")
End If
If reg IsNot Nothing Then
reg = reg.OpenSubKey("ODBC")
If reg IsNot Nothing Then
reg = reg.OpenSubKey("ODBC.INI")
If reg IsNot Nothing Then
reg = reg.OpenSubKey("ODBC Data Sources")
If reg IsNot Nothing Then
For Each sName As String In reg.GetValueNames()
dsnList.Add(sName, DataSourceType.User)
Next
End If
Try
reg.Close()
Catch
End Try
End If
End If
End If
Return dsnList
End Function
End Module
答案 2 :(得分:3)
我意识到这有点过时了,但也许会对某人有所帮助。在64位Windows操作系统上使用ODBC管理器时,您将只看到64个ODBC连接。如果您要寻找的连接设置为32位,则可以浏览到\ Windows \ SysWOW64 \ odbcad32.exe小程序并管理旧版32位DSN。在处理编译为32位目标的应用程序时,这很有用。