什么是访问DSN的访问限制

问题描述:

我们正在运行我们的应用程序的一部分作为一个Windows服务,它需要能够访问DSNs为了通过ODBC导入。然而,似乎有许多限制,通过试验和错误发现它可以访问的DSN。例如,它似乎不能 1.访问系统DSN,除非运行该服务的帐户具有管理权限。 (当我尝试连接时,我得到了拒绝访问错误) 2.访问由不同用户创建的用户DSN(这是可以理解的)。 3.通过网络访问文件DSN什么是访问DSN的访问限制

我读过文件DSN的目的是让其他计算机使用它来连接,但我似乎无法做到这一点。

因此,任何人都知道,或知道在哪里我可以找出什么时候使用Windows服务访问DSN的所有规则和限制。 谢谢

这是介于#1和#2之间的某处:有时正确的文件权限也是必需的。我曾经在连接到DB2 DSN的Vista计算机上遇到过麻烦,因为无论出于何种原因(可能写出临时文件;尽管我不知道为什么它会在此位置执行此操作而不是用户特定的操作) ,驱动程序需要对IBM安装客户端二进制文件和库的目录进行写入访问,该目录由管理员完成并位于C驱动器的根目录中。

我想你已经发现了三条主要规则。 :-)

除了您可能不需要您的服务帐户的管理员权限。 IANANA(我不是网络管理员),但您的服务帐户可能只需要读取其中一个ODBC文件或目录。

您无法连接到具有服务的映射驱动器。映射驱动器必须与称为桌面堆的内存进行交互,后者会跟踪桌面上的图标。服务无法访问该内存。如果你必须使用dsn创建一个systemdsn。最好使用连接字符串并将其存储在app.config中,并使用加密API来加密用户名和密码。