微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

windows-services – 由Windows服务启动的可执行文件使用本地系统帐户无法访问网络共享

我有一个Windows服务启动的可执行文件,该程序将在客户机器上运行,并且需要连接到远程共享以执行特定任务.此份额由客户通过UI指定,因此我们事先并不知道这意味着它不能“硬编码”,或者预先映射共享.

以前我们要求客户登录他们的计算机并在登录时运行可执行文件,但我们一直希望允许我们的程序在服务中运行而不需要登录,主要是为了让客户更容易并防止任何意外注销关闭我们的软件.因此,这也意味着我们不知道客户机器上存在哪些本地用户帐户,因此我们必须使用本地系统帐户启动该服务.

如上所述,我们现在有一个包装器服务来启动可执行文件并执行各种任务.这似乎在大多数情况下都能正常工作并且可以很好地访问底层网络 – 我们的软件目的主要涉及捕获数据包等.

但是,当软件尝试连接到Windows共享(UNC名称)时,它无法连接.如果可执行文件是手动启动的,那么连接正常.

我一般看到解决这类问题的建议似乎都说使用用户帐户,因为系统帐户无法访问网络共享,但在我们的例子中这是不可能的.有没有其他方法可以让这个工作?

编辑:我忘了提到这个应用程序可以(并且最常见的是)在Win2K而不是XP上运行,我认为我说的是在XP之前本地网络帐户不可用?

如果您可以更改Windows服务以使其在网络服务帐户下运行,那么您的可执行文件将能够访问网络共享(这是创建网络服务帐户的一个原因).

本地系统和本地服务帐户没有任何网络凭据,因此无法在网络上进行身份验证.这是设计的.

编辑:IIRC,网络服务帐户在Server 2003中引入,并添加到其中一个XP服务包中.

如果您不能依赖可用的网络服务帐户,那么您可以考虑创建专用域帐户,在某处存储帐户的凭据,从服务内部读取它们,然后在访问网络共享之前登录并模拟该用户.或者,Windows服务可以直接作为专用帐户运行,在这种情况下,它将需要“作为服务登录”权限.

原文地址:https://www.jb51.cc/windows/364638.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐