Подключение сетевого диска для службы
Как подключить сетевой диск, который будет использоваться службой Windows?
Предположим, некоторая служба Windows использует код, которому необходимо использовать сетевой диск и никаких путей UNC. Как сделать отображение диска доступно сессии службы, когда служба запускается? Вход в качестве службы пользователь и создание постоянного подключения не походит для данной ситуации.
Первый вариант, создать дополнительную службу, которая будет выполнять две функции. Т.е. служба будет запускать монтирования сетевого диска, а затем запускать другую службу, которая использует этот диск.
- Вспомогательная служба должна иметь все те же команды start/stop/restart как и обычная служба
- Основная и вспомогательная службы должны выполняться от имен одно и того же пользователя, тогда с правами доступа к сетевому диску не будет проблем.Если основная служба будет запущена от LOCALSYSTEM или подобного пользователя, то будут проблемы с доступом к сетевому диску.
Вариант второй. Данный вариант более интересный. Использование его на свой страх и риск. (Я испытал на XP и Server 2008 R2 x64)
Для этого хака вам нужен Sysinternals Suite
Шаг первый: Откройте cmd.exe с повышенными привилегиями то есть (Запуск от имени администратора)
Шаг два: Используйте команду PsExec.exe: Перейдите к папке, содержащей SysinternalsSuite и выполните следующую команду
1 |
psexec -i -s cmd.exe |
вы сейчас с правами
1 |
nt authority\system |
и вы можете проверить это набрав
1 |
whoami |
Опция
-i
необходима потому, что для отображения дисков нужно взаимодействовать с пользователем
Шаг третий: Создайте постоянный подключенный диск в качестве учетной записи SYSTEM с помощью следующей команды
1 |
net use z: \\servername\sharedfolder /persistent:yes |
Это так просто!
ВНИМАНИЕ: Вы можете отключить этот диск только так же, как и создали его, с системной учетной записью. Если вам нужно, удалить его, выполните шаги 1 и 2, но изменить команду на шаге 3 на
1 |
net use z: /delete |
ПРИМЕЧАНИЕ: Вновь созданный сетевой диск теперь появится для всех пользователей этой системы, но они будут видеть его как «Отключен сетевой диск (Z :)». Не верьте своим глазам, хоть утверждение диск отключен, но он будет работать для всех.
Вариант три. Еще решение, которое похоже на второе с PsExec, но работает без дополнительных инструментов и работает после перезагрузки.
Добавьте в назначенные задания при старте системы запуск файла «от имени» и содержимым
1 |
net use z: \servername\sharedfolder /persistent:yes |
Надеемся, что один из предложенных вариантов решит вашу задачу. Если у Вас возникнут трудности, или данные варианты не решают вашу задачу, то мы поможем решить, подробности [email protected]