![在 Windows 中为 SYSTEM 用户映射网络驱动器](https://linux22.com/image/1408579/%E5%9C%A8%20Windows%20%E4%B8%AD%E4%B8%BA%20SYSTEM%20%E7%94%A8%E6%88%B7%E6%98%A0%E5%B0%84%E7%BD%91%E7%BB%9C%E9%A9%B1%E5%8A%A8%E5%99%A8.png)
我有一个软件需要访问文件,就好像它们是机器本地的文件一样,所以我只是使用 将网络驱动器映射为字母net use
。这按预期工作,但是软件本身作为 SYSTEM 用户帐户的服务运行,这不是可选的也不是可配置的。我目前已将驱动器映射到执行 的用户中net use
。
所以我的问题是,如何映射驱动器以便系统帐户可以访问它?
正如指出的那样这个问题没有办法为所有用户映射驱动器。
更一般的情况下,如何将远程位置挂载到整个系统的本地文件系统中(在启动时完全没问题),方式与在 Linux 中相同。
答案1
通过 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 SYSTEM /RL HIGHEST
答案2
我遇到了同样的问题,SQL Server 上的批量复制作业 (BCP) 需要将文件写入由组织中不同组管理的不同服务器。
诀窍是将驱动器映射为 BCP 作业正在使用的用户。您将驱动器映射为具有所需目标权限的专用活动目录帐户,有些人称之为服务帐户。我不得不与我的 AD 人员合作才能完成一个设置。要找出 BCP 正在使用哪个用户帐户,请从 SQL Server 查询窗口运行以下命令:
EXEC xp_cmdshell 'ECHO %USERDOMAIN%\%USERNAME%
映射驱动器时,whoami
在命令提示符下使用。
在我的例子中,我无法以 SYSTEM 帐户登录到 SQL Server,因此我构建了一个批处理作业,然后可以由任务计划程序执行,但以 SYSTEM 帐户运行。我将命令放入批处理作业中以将结果写入文本文件,因为我无法看到它。
** 以下为批处理作业 **
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
** 我希望这能帮助别人 **
答案3
我在尝试使用 CrashPlan 备份网络共享时遇到了这个问题。由于 CrashPlan 的服务以SYSTEM
用户身份运行,因此它无法访问从用户帐户映射的网络共享。CrashPlan 在 Windows 计算机上提供了一种解决方法。
该解决方法为我解决了这个问题,并允许 CrashPlan 的服务访问我的网络共享。这也应该与您的问题有关,因为它具有相同的根本原因。
CrashPlan 关于此问题的文章:
http://support.code42.com/../安装网络存储或 NAS 设备备份
CrashPlan 针对 Windows 的解决方案:
http://support.code42.com/CrashPlan/Latest/Backup/Back_Up_a_Windows_Network_Drive
概括:
- 创建一个安装驱动器的批处理文件(包括
net use
您已经使用的命令)。 - 使用任务计划程序创建一个任务,在启动时自动运行此批处理文件。可以将此任务设置为以用户身份运行
SYSTEM
。