关于windows service不能访问网络共享盘(NetWork Drive)的解决方案

我映射一个网络驱动器到本机的时候,发现本机的程序直接能访问读取网络驱动器,但是把本机的程序作为本机的windows服务运行的时候就不能访问了。

Qt中的QDir::exist(folder)访问失败。这样导致的原因是映射网络驱动器,需要服务程序运行的权限账户和远程共享文件的机器要运行在同一个域(Domain)

下面,用PStool这个工具就可以了,它直接使用SYSTEM账户权限,来映射网络驱动器。这样,远程驱动器和本机的service就处于同一个域下了。

注意:这个是比较hack的做法,并不推荐这么做。微软是不支持的。

1.用psexec创建网络驱动器:

admin 权限运行CMD,然后运行psexec -i -s cmd.exe

然后在新打开的CMD窗口中运行以下命令映射网络驱动器Z盘, net use z: \\server_ip\share_folder /persistent:yes

以上的net命令可能会让你输入远程的系统用户名和密码,我的远程是XP,所以用户名密码是:Administrator/无密码

注: 所有微软的Windows 系统默认管理员用户都是Administator 而密码是你自己设定的,系统没有默认密码

2.运行本机windows服务,成功访问网络驱动器Z

references:

http://stackoverflow.com/questions/18632193/directory-exists-returns-false-for-mapped-drive-in-c-sharp-coding

http://stackoverflow.com/questions/3622089/windows-service-cant-access-network-share

http://serverfault.com/questions/177139/windows-service-cant-access-network-share

http://stackoverflow.com/questions/182750/map-a-network-drive-to-be-used-by-a-service

https://technet.microsoft.com/en-us/sysinternals/psexec   (PStool工具下载)

时间: 2024-10-12 14:41:19

关于windows service不能访问网络共享盘(NetWork Drive)的解决方案的相关文章

解决Windows服务无法访问网络映射盘的问题

下载工具psexec 下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec 百度地址:https://pan.baidu.com/s/1Yw5fQpsxe2Tdh94R-A_2ug       提取码:y5ik 用psexec创建网络驱动器 1.运行CMD,执行 psexec -i -s cmd.exe 2.在新开的CMD窗口中运行网络映射 net use z: \\10.10.x.xxx\test /persis

ii 第七单元 访问网络共享文件系统

挂载网络文件系统 网络文件系统是由网络附加存储服务器通过网络向多个主机提供的一种文件系统 , 而不是由块设备 ( 例如硬盘驱动器 ) 提供的.客户端通过特殊的文件系统协议和格式访问远程存储 Linux 中有两种主要协议可用访问网络文件系统 : NFS 和CIFS . 访问网络共享的三个基本步骤– 1. 识别要访问的远程共享– 2. 确定挂载点 ( 应该将共享挂载到的位置 ), 并创建挂载点的空目录– 3. 通过相应的名利或配置更改挂载网络文件系统 1.cifsCIFS( Comon Intern

C# 带用户密码访问网络共享

原文:C# 带用户密码访问网络共享 调用WNetUseConnection API 函数详细参数参考:https://msdn.microsoft.com/en-us/library/windows/desktop/aa385482(v=vs.85).aspx C# 调用WNetUseConnection连接共享类的代码: NetworkShareConnect.cs //引入命名空间 //using System.Runtime.InteropServices; public class Ne

【基础部分】之访问网络共享文件系统

访问网络共享文件系统 一.访问windows 1.安装samba yum install samba-client smbclient -L //ip mount //ip/目录名 /mnt/ -o username=guest 永久访问 vim /etc/fstab //ip/目录名 /挂载点 cifs defaults,username=guest 0 0 mount -a 检测 二.linux之间的共享 1.手动挂载 yum install nfs-utils showmount -e i

windows server2003无法访问win7共享

windows server2003无法访问win7共享 重启一下ok; 参考地址: http://lesca.me/archives/windows-7-share-issue-the-specified-server-cannot-perform-the-requested-operation.html

Windows 10 访问网络共享 总是提示用户名或密码不正确的解决方法

今天同事在Windows10上共享了一些文件,其他使用Windows 7的同事都可以正常使用,唯独我是使用Windows 10操作系统的,和别人输入一样的用户名和密码,却总是告诉我:用户名或密码不正确. 试过很多之前的百度得来的方法,结果都不好用.例如使用组策略管理器,去修改本地策略,安全选项中的一些设置,什么网络安全:LAN管理器身份验证级别.或者开启来宾用户什么的,都没有用. 最后还是万能的谷歌告诉了我解决办法,虽然没有搞清楚为什么. 解决办法就是用户名前面加上主机名比如,共享的机器名字叫:

ASP.NET访问网络映射盘&实现文件上传读取功能

最近在改Web的时候,遇到一个问题,要跨机器访问共享文件夹,以实现文件正常上传下载功能. 要实现该功能,可以采用HTTP的方式,也可以使用网络映射磁盘的方式,今天主要给大家分享一下使用网络映射磁盘的方式,来跨机器访问共享文件夹. 解决方案:   本以为只要在Web服务器做一下磁盘映射,然后把该映射盘符当做本地磁盘来使用就可以了,但是却一直有问题,查找了一下资料,是因为IIS默认账户为NETWORK_SERVICE,该账户是没权限访问共享目录的,所以当我们把站点部署到IIS上的时候,再访问映射磁盘

windows service 之访问权限(有NetworkService和LocalSystem的区分)

最近写了一个关于从局域网的算机上下载文件的winodws service,最初认为应该没什么大的问题.通过本地的调试也没发现问题.但是当我把程序发布后发现服务报错“访问路径被拒绝”,我的第一感觉,肯定是网络文件夹访问权限问题.那好吧,就用个最傻的方法把文件夹的权限设置成everyone.但是,我把服务跑起来后发现根本就不理你,还是报同样的错误.难道是下载文件的模块出错了?后来我把下载模块放到一个控制台程序和一个web页面中,都顺利通过.真是搞不懂,后来到网上搜一下看到思归老大的回复,是 wind

Windows Server 2008创建网络共享

在图形界面下创建共享 共享资源的创建方法非常简单.在图形界面下可以通过"我的电脑"或"资源管理器"来创建,右击文件夹,选择"共享和安全".如果没有该选项,则说明当前用户没有创建共享的权限,只有Administrators或Power Users组的成员有创建共享的权限.文件夹共享后,会在图标的下面出现一只手的图示. 在创建共享时,可以对以下方面进行设置,如图所示: 共享名:当用户从网络上访问这个共享资源时所看到的名字,默认情况下共享名就是文件夹的