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





Думаю, вы уже сами открыли три основных правила. :-)
За исключением того, что вам, вероятно, не нужны права администратора для вашей учетной записи службы. IANANA (я не сетевой администратор), но вашей учетной записи службы, вероятно, просто нужен доступ для чтения к одному из файлов или каталогов ODBC.
Это где-то между вашим №1 и №2: иногда также необходимы правильные права доступа к файлам. Однажды у меня были проблемы с подключением компьютера Vista к DB2 DSN, потому что по какой-то причине (возможно, чтобы записать временные файлы; хотя я не знаю, почему он будет делать такие вещи в этом месте, а не в пользовательском) , драйверу требовался доступ на запись в каталог, в который IBM установила клиентские двоичные файлы и библиотеки, что было сделано администратором и находилось в корне диска C.
Вы не можете подключиться к подключенным дискам с помощью службы. Подключенный диск должен взаимодействовать с памятью, называемой кучей рабочего стола, которая отслеживает значки на рабочем столе. Службы не имеют доступа к этой памяти. Если вам нужно использовать dsn, создайте файл systemdsn. Лучше было бы использовать строку подключения и сохранить ее в app.config и использовать api шифрования для шифрования имени пользователя и пароля.