我正在尝试从Windows服务(以LocalSystem帐户运行)连接到受密码保护的远程共享文件夹。似乎LocalSystem帐户无法使用WNetAddConnection2()或类似的调用直接访问受密码保护的网络共享。
有人可以确认吗?
我读过冒充管理员用户可能是解决之道。
我尝试在WNetAddConnection2()之前使用LogonUser()和ImpersonateLoggedOnUser(),看来网络路径的安装成功,但是实际访问(例如,枚举远程文件夹中的文件)失败。
有任何想法吗?

谢谢。

最佳答案

为了表示信任,我一直只在域环境中工作,并且没有密码保护的网络共享,但是我知道建立连接的主要方法有两种:WNetAddConnection2 API和NetUseAdd API。我建议您尝试使用等于1(NetUseAdd)的Level的USE_INFO_1函数。我只使用了USE_INFO_2,它具有ui2_usernameui2_domainnameui2_password,但是USE_INFO_1只具有ui1_password,因此它看起来像一个用于连接受密码保护的共享的函数。

顺便说一下,LogonUser()确实没有意义,因为它使本地计算机上的本地登录,并且您需要建立到远程计算机的 session 。这可以执行WNetAddConnection2NetUseAdd函数。

关于windows - Windows服务中的WNetAddConnection2,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2968426/

10-10 15:35