我有一个服务,它位于一个非常有限的服务器系统中。它必须在特定用户下运行,我们称之为用户A.
该服务还必须能够访问用户A无权访问的网络共享,但用户B具有。因此,服务必须以用户A身份访问此网络共享,同时以用户A身份运行。
如果在计算机上本地运行,我将这样做的方法是在不同的用户下映射网络驱动器。但是服务无法访问映射的网络驱动器,即使它是在同一用户下映射的:
Services and Redirected Drives
有没有人建议我能做些什么?我是该服务的创建者,所以我可以随意修改它。有没有办法让它通过winapi调用(非托管C ++)作为另一个用户访问网络共享?
答案 0 :(得分:0)
我认为这个SO帖子可能实际上是我正在寻找的答案: Access to a protected network share using Win32 C++
除非有人有更好的想法或其他异议?
答案 1 :(得分:0)
您链接的文章说:
相反,该服务应使用客户端模拟来模拟用户。
在此上下文中,这意味着使用LogonUser
和ImpersonateLoggedOnUser
。
一个警告:只有在您所在的域中才会起作用,即您要登录网络服务器的帐户在本地计算机上也有效。如果没有,那么您将必须使用WNetAddConnection2
或类似的方式明确建立网络连接。从技术上讲,这可能会暴露与其他服务的联系,但在大多数情况下风险很小。