2008-09-24 2 views
0

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

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

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

ответ

1

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

1

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

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

0

Вы не можете подключиться к подключенным дискам с услугой. Отображаемый диск должен взаимодействовать с памятью, называемой кучей рабочего стола, которая отслеживает значки на рабочем столе. У служб нет доступа к этой памяти. Если вам нужно использовать dsn, создайте systemdsn. лучше было бы использовать строку подключения и сохранить ее в app.config и использовать шифрование api для шифрования имени пользователя и пароля.

Смежные вопросы