Lua io.popen() - 访问 Windows 共享驱动器

我在一台运行 Windows 10 的计算机上运行 Lua 程序。这台 Windows 10 计算机与另一台 Windows 10 计算机联网,并且这台另外的计算机正在与我的计算机共享其 D: 驱动器。我的计算机通过 O: 驱动器来访问共享的驱动器。

当我在我的计算机上打开一个 cmd 窗口并输入:

type "O:\Data\config\file.xml"

我会在我的 cmd 窗口中得到 file.xml 的内容。但如果我通过 Lua 运行相同的命令:

f = io.popen([["type O:\Data\config\file.xml"]])

output = f:read("*l")

那么 output 将返回为 nil

这种行为适用于任何涉及共享驱动器 O: 的命令,不仅限于 type。同样,我有一些引用了 O: 驱动器的批处理脚本,我使用 os.execute 调用它们,但它们无法完成任务(我可以看到它们正在执行,但不正确)。但是,如果我使用本地的 D: 或 C: 驱动器运行类似的命令或脚本,则不会出现此问题。

有什么想法,这两个调用之间可能有什么不同吗?是否有一种不同的方法可以调用 O: 驱动器?

点赞
用户10796235
用户10796235

我的 Lua 应用程序作为服务正在运行时,我发现它在运行时是作为“guest”用户而不是我的系统用户运行的。因此,它没有适当的权限来运行。

我将我的 Windows 服务修改为以我的特定用户身份运行,这解决了此问题。

2020-12-18 17:41:05