正常的exe文件是可以访问的,注册成服务以后就访问不了映射盘了,有遇到过的吗?

解决方案 »

  1.   

    一般是权限的问题。运行WINDOWS服务的帐号没有访问映射盘的权限
      

  2.   

    运行服务的账号和正常执行exe的账号是一个。
      

  3.   

    你真的很确认是同一个帐号?就是同一个账户,登陆服务的和正常执行EXE的是同一个用户。
    日志信息:
    System.IO.DirectoryNotFoundException: パス 'Y:\Bee_DB1.6\MyConfig\Resource\RSC2TDX.xml' 找不到部分路径
      

  4.   

    找不到部分路径 就是你映射的驱动器不存在啊映射网络驱动器的时候,有些选项的,如登录时重新连接,windows服务是在没有登录的情况下就能运行的,修改下配置测试下
      

  5.   

    网络映射盘在机器刚开的时候是找不到的。需要手动打开盘符寻找一次。所以你还是用绝对路径,比如 \\192.168.0.1\aaa这样的方式访问才行。
      

  6.   


    那现在的问题就不是程序能不能访问映射盘,而是windows以何种机制管理映射盘了。
      

  7.   

    不一定能完成,也许windows有提供api。但是没见过。不好说。
      

  8.   

    windows服务找不到,还是没有映射出来。你可以使用代码去映射, 服务里面的代码去进行映射。
    你说你的服务程序运行的帐号跟你登录的相同,你是怎么断定的?服务程序设置的是本机帐号启动的还是另外一个计算机帐号?本机的帐号怎么去访问另外的计算机的资源呢?
    你exe程序可以,是因为你映射的时候输入了帐号和密码的
      

  9.   

    程序编写的WIndows服务是属于System账户的,但是改账户不具有NetWork的访问权限,所以无法访问网络的资源。 您可以试着查找如何将服务的启动账户设置成具有NetWork权限的办法。不过这样您的服务可以失去对本地系统的某些访问权限。另外,如果您在服务器程序中加入映射网盘的代码,结果是无法映射的。
      

  10.   

    先写个 batch 档 去做映射网盘的操作 就可以先确认是不是权限的问题
    当然是透过 windows services 去呼叫 batch filewindows services 的权限可以加大些,在 属性/登录裹可以修改成 administrators 也可以协助了解是不是权限的问题
      

  11.   

    > windows服务找不到,还是没有映射出来。
    应该是找不到,因为异常信息是路径的一部分不存在。
    > 你可以使用代码去映射, 服务里面的代码去进行映射。
    这是一种解决方法,不是我们最想要的方法。
    > 你说你的服务程序运行的帐号跟你登录的相同,你是怎么断定的?
    安装服务的时候指定的账户,就是执行exe文件的账户。
    > 服务程序设置的是本机帐号启动的还是另外一个计算机帐号?
    本机账号,就是exe文件执行的账号。
    > 本机的帐号怎么去访问另外的计算机的资源呢?
    本机账号怎么不能访问另外计算机的资源?为什么exe文件可以访问呢?
    > 你exe程序可以,是因为你映射的时候输入了帐号和密码的
    现在基本知道原因了,还在解决中。在服务里面创建一个虚拟用户,模拟登陆。正在尝试中
      

  12.   

    19楼已经是正解,你想在服务中访问映射盘是很麻烦的。服务中应该直接去访问UNC路径,这也是微软产品遵循的方式,support.microsoft.com/kb/257174这篇文章就是以IIS为例子。
      

  13.   

    调用WNetAddConnection2,进行磁盘映射.