4

У меня есть часть программного обеспечения, которой нужен доступ к файлам, как если бы они были локальными для машины, поэтому я просто сопоставил сетевой диск как букву, используя net use . Это работает, как и ожидалось, однако само программное обеспечение работает как служба с учетной записью пользователя SYSTEM, это не является обязательным или настраиваемым. В настоящее время у меня есть сопоставленный диск в пользователе, от которого я выполнил использование net use .

Итак, мой вопрос: как мне подключить диск, чтобы системная учетная запись имела к нему доступ?

Как указано в этом вопросе, нет способа сопоставления диска для всех пользователей.

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

3 ответа3

3

Простое решение через cmd (с правами администратора) без каких-либо командных файлов будет:

schtasks /create /tn "my_mount" /tr "net use V: \\hostname\directory /persistent:yes" /sc onstart /RU SYSTEM

с последующим перезапуском вашего сервера или выполнением:

schtasks /run /tn "my_mount"

РЕДАКТИРОВАТЬ: пользователь alfa_989 предлагает следующие расширения команды, которые я не проверял. Но это все еще может быть полезно для кого-то:

schtasks /create /tn "my_mount" /tr "net use V: \hostname \directory /persistent: yes" /sc onstart /RU СИСТЕМА /RL HIGHEST

2

У меня была та же проблема, когда заданию группового копирования (BCP) на SQL Server требовалось записать файл на другой сервер, управляемый другой группой в организации.

Хитрость заключается в том, чтобы подключить диск как пользователь, который использует задание BCP. Вы сопоставляете диск как выделенную учетную запись активного каталога, у которой есть разрешения для нужного места назначения, которое некоторые называют служебной учетной записью. Я должен был работать с моими людьми AD, чтобы получить одну установку. Чтобы узнать, какая учетная запись пользователя используется BCP, запустите эту команду из окна SQL Server Query:

EXEC xp_cmdshell 'ECHO %USERDOMAIN%\%USERNAME%

При подключении диска используйте whoami в командной строке.

В моем случае мне не удалось войти на SQL Server как учетная запись SYSTEM, поэтому я создал пакетное задание, которое затем могло быть выполнено планировщиком задач, но запустило AS системную учетную запись. Я поместил команды в пакетное задание, чтобы записать результаты в текстовый файл, так как я не смог бы его увидеть.

** Пакетная работа ниже **

ECHO ON

ECHO This will map the drive, but is being run by task scheduler AS the user SYSTEM

ECHO which should make it accessible to the user SYSTEM

ECHO List the existing drives first.

net use >> c:\Test\SystemNetUseOutput.txt

net use R: \\MyRemoteServer\MyDirectory\ /P:Yes /u:MyDomain\MyUsername pa$$word

ECHO the /P switch makes the drive remain after reboot

ECHO List the existing drives with the new mapping

net use >> c:\Test\SystemNetUseOutput.txt

ECHO See what user this batch job ran under

whoami >> c:\Test\SystemNetUseOutput.txt

ECHO need to exit to allow the job to finish

EXIT

** Надеюсь, это поможет кому-то еще **

2

Я столкнулся с этой проблемой при попытке использовать CrashPlan для резервного копирования общей сетевой папки. Поскольку служба CrashPlan работает как пользователь SYSTEM , она не может получить доступ к сетевым ресурсам, которые были сопоставлены с учетными записями пользователей. CrashPlan предоставляет обходной путь на компьютерах с Windows.
Обходной путь решил проблему для меня и позволил сервису CrashPlan получить доступ к моим сетевым ресурсам. Это также должно относиться к вашей проблеме, потому что она имеет ту же основную причину.

Статья CrashPlan по этому вопросу:
http://support.code42.com/../Mounting_Networked_Storage_Or_NAS_Devices_For_Backup

Обходной путь CrashPlan для Windows:
http://support.code42.com/CrashPlan/Latest/Backup/Back_Up_a_Windows_Network_Drive

Резюме:

  1. Создайте командный файл, который монтирует ваш диск (включая команду net use которую вы уже использовали).
  2. Используйте Task Scheduler, чтобы создать задачу, которая автоматически запускает этот пакетный файл при запуске. Задача может быть запущена от имени пользователя SYSTEM .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .