Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Сервис не может получить доступ к подключенному диску

Автор вопроса: RohitОтветов: 3

Я читал на многих форумах, что подключенные диски недоступны из службы, поскольку ни один пользователь не вошел в систему.

Вопрос 1) Я попытался сделать свою службу в качестве входа в систему - в качестве какой-то учетной записи, и у меня был сетевой диск, подключенный к этой самой учетной записи. Сервис по-прежнему не может получить к нему доступ. Почему?

Вопрос 2) Из того же сервиса я вызываю другой процесс. Под какой учетной записью пользователя будет запускаться процесс?

Спасибо

windows-servicessecurity-contextprocessmapped-drive

Ответы

Ответ 1 · рейтинг 4 · Remy Lebeau

1) Используйте вместо этого UNC-пути, тогда вам не нужен доступ к подключенным буквам дисков. Что касается того, почему вы не можете получить к ним доступ даже при работе в одной и той же учетной записи, трудно сказать наверняка, не увидев фактический код.

2) это зависит от того, как вы запускаете процесс. Если вы используете ShellExecute() или CreateProcess(), то он запускается в учетной записи пользователя вызывающего потока. Если вы используете CreateProcessAsUser(), CreateProcessWithLogonW() или CreateProcessWithTokenW(), то он запускается в той учетной записи, которую вы передаете.

Ответ 2 · рейтинг 1 · deenaik

Я столкнулся с аналогичной проблемой при запуске JBoss в сервисном режиме, мой Java-код не мог получить доступ к подключенному диску, даже если я выполняю службу даже после изменения параметра "Войти как:" для того же пользователя, который подключил диск.

Затем я понял, что если я могу подключить диск с помощью той же службы, он должен работать.

И, наконец, добавление простой команды в верхней части файла service.bat решило проблему.

net use x: \\SERVERNAME\SHARENAME

Ответ 3 · Richard

Службы не имеют доступа к подключенным дискам в XP и более поздних версиях, поскольку подключенные диски являются ресурсом для каждого пользователя, поэтому они зависят от того, кто вошел в систему. Поскольку никто не может войти в систему, возможно, что подключенных дисков нет диски.

Ваш сервис может отобразить сам диск.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы