windows - 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: 驱动器?
解决方案
我的 Lua 应用程序作为服务运行,我确定当它作为服务运行时,它作为“来宾”用户而不是我的系统用户运行。因此,它没有适当的运行权限。
我修改了我的 Windows 服务以作为我的特定用户运行,这解决了这个问题。
推荐阅读
- python - HDF5 dfs 到 Numpy 数组 - 无法执行 numpy 操作
- java - 我无法理解没有父母的孩子的投射界面
- c++ - 为什么向量范围构造函数比填充构造函数快 10 倍?
- spring - Maven - 多模块应用程序 - 全新安装问题
- python - 如何为堆栈上的每个调用函数保留调用计数(检测循环)?
- next.js - Next-i18next 初始语言环境参数未传递到 serverSideTranslations
- html - 使用 CSS Bootstrap 在标题旁边放一个徽标?
- holoviews - 使用 Holoviews + Datashader 处理大型网格数据
- python - 如何在 python 的 azure 函数中使用 req.get_body() 以及目的是什么?
- python - 将 pandas 数据帧按列表分解为多行,并为多索引添加一个新列