我正在创建一个验证实用程序,用于检查应用程序的各个部分以确保它们配置正确。我需要检查的一件事是 Web.config 文件中的 DSN 条目是功能 DSN,并且 DSN 指向正确的 SQL 服务器和数据库。
目前,您可以在本地或远程两种模式之一中运行该实用程序。当我尝试验证本地计算机上的远程系统 DSN 时,会出现问题。我知道为什么它不起作用,我的本地计算机上没有相同的 DSN。所以我需要弄清楚的是如何从我有管理权限的远程机器上检索 DSN 连接信息,或者让远程机器为我验证它。
有什么建议么?谢谢!
编辑
很明显,DSN 信息也存储在注册表中!
oRegConn = new ConnectionOptions();
oRegConn.Username = username;
oRegConn.Password = password;
scope = new ManagementScope(@"//" + servername + @"/root/default", oRegConn);
registry = new ManagementClass(scope, new ManagementPath("StdRegProv"), null);
inParams = registry.GetMethodParameters("GetStringValue");
inParams["sSubKeyName"] = "SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources\\" +
dsnName;
inParams["sValueName"] = "Server";
outParams = registry.InvokeMethod("GetStringValue", inParams, null);
server = outParams["sValue"].ToString();