Служба не может получить доступ к подключенному диску - PullRequest
1 голос
/ 04 мая 2010

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

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

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

Спасибо

Ответы [ 3 ]

4 голосов
/ 04 мая 2010

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

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

1 голос
/ 03 декабря 2012

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

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

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

net use x: \\SERVERNAME\SHARENAME
0 голосов
/ 04 мая 2010

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

Ваш сервис может подключить сам диск.

...