gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:59:41 25 4
gpt4 key购买 nike

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

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

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

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

我通常看到的解决此类问题的建议似乎都说使用用户帐户,因为系统帐户无法访问网络共享,但在我们的情况下这是不可能的。有没有其他方法可以让这个工作?

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

最佳答案

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

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

编辑: IIRC,网络服务帐户是在 Server 2003 中引入的,并添加到 XP 服务包之一。

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

关于windows-services - 使用本地系统帐户的 Windows 服务启动的可执行文件无法访问网络共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/249928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com