在 32 位和 64 位的 win7 上修改远程系统 ODBC DSN?

Modifying remote System ODBC DSNs on win7, both 32-bit and 64-bit?

我正在尝试更新多个不同用户框上的 DSN,应该是 运行ning Windows 7 x64。人们有时会创建自己的 DSN(可能是系统,可能是用户),以及管理员拥有的其他地方。当服务器名是特定值时,我想用该框的 CNAME 替换它。

我读了这篇文章,这似乎是一个好的开始:http://www.sqldataplatform.com/Blog/Post/9/Modifying-ODBC-Settings-with-WMI-and-PowerShell

但是,在我的盒子上进行测试时,我 运行 遇到了一个问题,我没有看到我期望的系统 DSN。

当我运行 64位"Data Sources (ODBC)" (C:\Windows\system32\odbcad32.exe)时,这是默认的,当你去开始->管理工具->数据源,然后我会看到我创建的数据源。但是,这不起作用:

Get-ChildItem -path "HKLM:\SOFTWARE\ODBC\ODBC.INI\" 

相反,我得到了一个在 32 位版本的数据源 (ODBC) 中创建的系统 DSN,又名 "C:\Windows\SysWOW64\odbcad32.exe"

奇怪的是,如果我 运行 这个,我会得到完全相同的 32 位 DSN,而我希望在其中得到 32 位和 64 位,即使我看到它们在不同的地方打开注册表时的节点。

Get-ChildItem -path "HKLM:\SOFTWARE\ODBC\ODBC.INI\" 
Get-ChildItem -path "HKLM:\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\" 

那么,知道我如何获得另一个 DSN 吗?谢谢

要查看 32 位版本,您需要 运行 C:\windows\SysWOW64\odbcad32.exe。要查看 64 位版本,只需 运行 odbcad32.exe(来自 System32)。

如果您运行正在运行 32 位 powershell 会话,您将只能看到 32 位的会话。如果您运行正在使用 64 位会话,则可以看到两者。