首页 > 解决方案 > 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: 驱动器的 bat 脚本,我使用 调用它们os.execute,但它们无法完成任务(我可以看到它们实际上正在执行,只是不正确)。但是,如果我使用本地 D: 或 C: 驱动器运行类似的命令或脚本,则不会出现此问题。

关于这两个电话之间可能有什么不同的任何想法?有没有其他方法可以调用 O: 驱动器?

标签: windowsluapopen

解决方案


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

我修改了我的 Windows 服务以作为我的特定用户运行,这解决了这个问题。


推荐阅读