Каковы ограничения доступа к DSN? - PullRequest
0 голосов
/ 24 сентября 2008

Мы запускаем часть нашего приложения в качестве службы Windows, и ему необходимо иметь доступ к DSN для импорта через ODBC. Однако, похоже, что методом проб и ошибок было обнаружено множество ограничений на доступ к DSN. Например, кажется, что это не может 1. получить доступ к системному DSN, если только учетная запись, на которой запущена служба, не имеет прав администратора. (Я получаю сообщение об ошибке «Отказано в доступе» при попытке подключения) 2. получить доступ к DSN пользователя, который был создан другим пользователем (это понятно). 3. получить доступ к файлу DSN по сети

Я читал, что цель файлового DSN - позволить другим компьютерам использовать его для подключения, однако я не могу заставить эту работу работать.

Так же кто-нибудь знает или знает, где я могу узнать, каковы все правила и ограничения доступа к DSN при использовании службы Windows. спасибо

Ответы [ 3 ]

1 голос
/ 10 ноября 2008

Это где-то между вашими # 1 и # 2: иногда необходимы правильные права доступа к файлу. Однажды у меня возникли проблемы с подключением компьютера с Vista к DSN DB2, потому что по какой-то причине (возможно, для записи временных файлов; хотя я не знаю, почему он будет делать это в этом месте вместо пользовательского) драйверу требовался доступ на запись в каталог, в который IBM установил двоичные файлы и библиотеки клиента, что было сделано администратором и находилось в корне диска C.

1 голос
/ 24 сентября 2008

Я думаю, что вы уже открыли три основных правила самостоятельно. : -)

За исключением того, что вам, вероятно, не нужны права администратора для вашей учетной записи службы. IANANA (я не администратор сети), но вашей учетной записи службы, вероятно, просто необходим доступ для чтения к одному из файлов или каталогов ODBC.

0 голосов
/ 05 августа 2009

Невозможно подключиться к подключенным дискам с помощью службы. Подключенный диск должен взаимодействовать с памятью, называемой кучей рабочего стола, которая отслеживает значки на рабочем столе. Сервисы не имеют доступа к этой памяти. Если вам нужно использовать DSN, создайте systemdsn. Лучше было бы использовать строку подключения и сохранить ее в app.config и использовать API шифрования для шифрования имени пользователя и пароля.

...