Windows Service 服务中,不能访问挂载目录(网络映射盘)

简介: Windows Service 服务中,不能访问挂载目录(网络映射盘)

SpringBoot Windows 自启动 - 通过 Windows Service 服务实现

Windows Service 服务中,不能访问挂载目录(网络映射盘)

在Windows操作系统中,系统服务(Services)、计划任务(Scheduled Tasks)以及很多系统调用都是以SYSTEM系统账号进行操作的。用 net use 挂载,或者在文件管理器上直接挂载,挂载卷是以 Administrator 身份进行挂载的,而 SYSTEM 账号无法使用 Administrator 挂载的文件卷。

net use X: \\172.16.0.88\Tools /persistent:yes /user:share share

网盘挂载(映射网络驱动器)

详见:https://www.cnblogs.com/vipsoft/p/17059153.html

注意:资源管理器里的映射网络磁盘,Windows Service 无法访问,需使用命令创建

测试代码

@GetMapping("/network")
public String testPath(HttpServletRequest request) {
    String path=request.getParameter("path");
    String result = "";
    if (FileUtil.exist(path)) {
        result = ("挂载目录,存在 => " + path);
    } else {
        result = ("挂载目录,不存在 => " + path);
    }
    return result;
}

正常运行

http://localhost:8080/demo/network?path=D%3A\

做成服务

SpringBoot 做成 Windows Service 服务:https://www.cnblogs.com/vipsoft/p/17236063.html

做成 Windows Service 服务后,挂载盘不可访问,如下图所示:

解决方案1(可以跳至方案2)

此方案,服务器重启后失效,需要重新配置 (可以跳过,看解决方案2)

下载PsExec

https://learn.microsoft.com/zh-cn/sysinternals/downloads/psexec

执行命令

  1. 运行CMD,执行 psexec -i -s cmd.exe
  2. 在新开的CMD窗口中运行网络映射 net use z: \\10.10.x.xxx\test /persistent:yes
  3. 输入用户名和密码映射成功
  4. 重启服务,成功访问网络映射盘

解决方案2

不可以在登录后的系统中创建,通过 whoami 输出会发出执行用户不同

同样是使用命令,只是利用 任务计划程序 ,使得系统重启后,能够再次执行挂载。

使用命令映射 Y 盘,注意此命令运行映射的盘符不可以在资源管理器中的同名,否则会报已存在

创建 批处理文件

MapNetworkDrive.bat

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.
if not exist G:\ (    
  net use G: \\172.16.0.88\Tools /persistent:yes /user:share share
  ECHO %Date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2% >> D:\MapNetworkDrive.log
  net use >> D:\MapNetworkDrive.log
) else (
  ECHO %Date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2% >> D:\MapNetworkDrive.log
  ECHO "exist G:\" >> D:\MapNetworkDrive.log
  net use >> D:\MapNetworkDrive.log
)
ECHO See what user this batch job ran under
whoami >> D:\MapNetworkDrive.log
ECHO need to exit to allow the job to finish
EXIT

执行: net use X: \\172.16.0.88\Tools /persistent:yes /user:share share 确保命令可以正确运行(有时候服务器会限制连接数,导致挂载失败)

创建 任务计划

关键 -- 使用命令创建 任务计划

schtasks /create /tn "MapNetworkDrive" /tr "D:\MapNetworkDrive.bat" /sc onstart /RU SYSTEM /RL HIGHEST

重启系统

日志文件 MapNetworkDrive.log

重点:nt authority\system

会记录新的网络连接。
状态       本地        远程                      网络
-------------------------------------------------------------------------------
OK           G:        \\172.16.0.88\Tools      Microsoft Windows Network
命令成功完成。
nt authority\system
目录
相关文章
|
11天前
|
NoSQL Redis Windows
windows服务器重装系统之后,Redis服务如何恢复?
windows服务器重装系统之后,Redis服务如何恢复?
34 6
|
2月前
|
安全 API 网络安全
OpenStack的 网络服务(Neutron)
【8月更文挑战第23天】
60 10
|
2月前
|
消息中间件 存储 Serverless
函数计算产品使用问题之怎么访问网络附加存储(NAS)存储模型文件
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
11天前
|
Java 应用服务中间件 Windows
windows服务器重装系统之后,Tomcat服务如何恢复?
windows服务器重装系统之后,Tomcat服务如何恢复?
25 10
|
11天前
|
消息中间件 Java Kafka
windows服务器重装系统之后,Kafka服务如何恢复?
windows服务器重装系统之后,Kafka服务如何恢复?
19 8
|
5天前
|
安全 Windows
怎样利用 Windows XP实现网络统一关机
怎样利用 Windows XP实现网络统一关机
怎样利用 Windows XP实现网络统一关机
|
12天前
|
机器学习/深度学习 安全 网络安全
云端盾牌:云计算时代的网络安全守护在这个数字脉搏加速跳动的时代,云计算以其高效、灵活的特性,成为推动企业数字化转型的强劲引擎。然而,正如每枚硬币都有两面,云计算的广泛应用也同步放大了网络安全的风险敞口。本文旨在探讨云计算服务中网络安全的关键作用,以及如何构建一道坚不可摧的信息防线,确保数据的安全与隐私。
云计算作为信息技术领域的革新力量,正深刻改变着企业的运营模式和人们的生活。但在享受其带来的便利与效率的同时,云服务的安全问题不容忽视。从数据泄露到服务中断,每一个安全事件都可能给企业和个人带来难以估量的损失。因此,本文聚焦于云计算环境下的网络安全挑战,分析其根源,并提出有效的防护策略,旨在为云服务的安全使用提供指导和参考。
|
13天前
|
监控 Windows
Windows服务器的服务如何实现自动启动?
Windows服务器的服务如何实现自动启动?
19 1
|
6天前
|
安全 Windows
电脑进入桌面后操作无响应?不妨试试禁用Windows Search服务
电脑进入桌面后操作无响应?不妨试试禁用Windows Search服务
|
2月前
|
API Docker Windows
2024 Ollama 一站式解决在Windows系统安装、使用、定制服务与实战案例
这篇文章是一份关于Ollama工具的一站式使用指南,涵盖了在Windows系统上安装、使用和定制服务,以及实战案例。
2024 Ollama 一站式解决在Windows系统安装、使用、定制服务与实战案例
下一篇
无影云桌面