我有一个在本地系统中运行的 Windows 服务,它只是不断尝试访问具有 \\machine\folder\file.txt 形式的 UNC 路径的文件,直到它成功。当我手动启动服务时它会立即成功,但在重新启动时它会出现系统错误 53(找不到网络路径),直到我执行诸如注销或使用Windows 资源管理器“摆弄”之类的操作,例如双击一个不相关的文本文件(奇怪,我知道)。但是没有可靠的技巧;我不确定是什么触发它突然能够看到共享文件夹。
但是,我偶然发现了一个明显可靠的“解决方案”,即尝试从服务内的“net use I:\\machine\folder”上创建一个 CreateProcess,以在尝试访问共享文件夹之前映射它(我继续使用 UNC路径,而不是我:)。net use
尽管net use
调用本身可能会失败(我没有检查,因为您甚至不应该能够从服务映射驱动器),但该调用似乎立即触发了我从服务访问共享文件夹的能力。
这听起来类似于数据库连接在服务启动时不起作用,但在手动启动时起作用,但在我的情况下,它是一个网络共享文件夹,而且我知道它也可以在上述情况下突然开始工作。
我认为这不是权限问题,因为它在成功获得访问权限时展示了对共享文件夹的完全访问权限。但我想知道原因,以便我能妥善处理。