很奇怪,如果我的程序是system 权限,用WNetAddConnection3()连接局域网中的服务器就是不成功,出错类型为1312,而如果我的程序是当前用户allan权限,则连接时成功。有高人知道是怎么回事吗?我是不行了,望解答,谢了!

解决方案 »

  1.   

    system账号登陆是一个空会话(NULL session),空会话不能证明自己的身份,如果对方是nt3.51以后的机器,默认是不允许空会话访问本地的资源,可以通过设置来改变,但是安全级别会降低,一般的方法是访问网络资源的服务,不要使用system账号,而使用一个确定的账号
      

  2.   

    在msdn上查一下1312的意思看看
      

  3.   

    可以更改
    HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters 
    REG_DWORD 为1,是nt机器 不禁止空会话的访问
      

  4.   

    Microsoft Knowledge Base Article - Q124184
    Service Running as System Account Fails Accessing Networkhttp://support.microsoft.com/default.aspx?scid=KB;EN-US;Q124184&
      

  5.   

    很高兴和大家交流,
    我的程序里的USERNAME="guest";PASSWORD="";,这样也算是空会话吗?
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  6.   

    我希望大家能帮我解决问题,所以决定把问题写详细点,
    问题是这样的,我的程序里有像下面的       代码,我的目的是要连接到局域网的一台服务器上(服务器开了"guest"并且没有设密码),以便下载服务器上的文件。当我运行我的程序的时候,在windows任务管理器中看到该进程的用户名是当前用户“allan”,程序运行很正常(可以连接上服务器,也可以从服务器上拷贝文件)。
          但是另一种情况下则不行,就是我的程序被别人的服务程序(system权限)调用的时候,我的程序在连接时(执行WNetAddConnection3();)出错,错误类型为1312,而此时我的程序的用户名并不是“allan”,而也变成了“system”。我相信错误肯定出在这里,因为只有这里有区别。包括我用其他程序(当前用户allan权限)调用我的程序,也是不会出错的,因为在这种情况下,我的程序获得的是“allan”权限。================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  7.   

    只要是system用户启动的服务,以及从这样的服务中启动的进程,都访问不了网络资源,你试着把服务改成用administrator来启动,应该问题都没有了