0

我有一项服务存在于一个非常受限的服务器系统中。它必须在特定用户下运行,我们称之为用户 A。

该服务还必须能够访问用户 A 无权访问但用户 B 有权访问的网络共享。因此,服务必须以用户 B 的身份访问此网络共享,同时以用户 A 的身份运行。

如果在计算机上本地运行,我会这样做的方法是在不同的用户下映射网络驱动器。但是服务无法访问映射的网络驱动器,即使它是在同一用户下映射的:

服务和重定向驱动器

有人对我能做什么有建议吗?我是服务的创建者,所以我可以随意修改它。是否有某种方法可以让它通过 winapi 调用(非托管 C++)作为另一个用户访问网络共享?

4

2 回答 2

0

您链接到的文章说:

相反,服务应该使用客户端模拟来模拟用户。

在这种情况下,这意味着使用LogonUserand ImpersonateLoggedOnUser

一个警告:只有当您在域中时才有效,即您要登录到网络服务器的帐户在本地计算机上也是有效的。如果没有,那么您将不得不使用WNetAddConnection2或类似的方式显式建立网络连接。从技术上讲,这可能会暴露与其他服务的连接,但在大多数情况下风险很小。

于 2015-10-04T21:40:38.607 回答
0

我认为这篇 SO 帖子实际上可能是我正在寻找的答案: Access to a protected network share using Win32 C++

除非有人有更好的想法或其他反对意见?

于 2015-10-02T16:59:27.270 回答