在Lua中更改Windows文件权限以允许写入

我正在读取并修改位于Windows程序文件夹中的文件中的某些数据。 由于这个原因,文件没有写入权限。因此,在尝试写入时会收到错误。

手动在包含文件的文件夹中授予写入权限后,脚本将可以工作。

在Lua脚本中修改文件夹权限或无论其权限如何编写文件是否可能?或者这只能通过文件资源管理器手动完成?

这是我当前的重写inputFile代码段:

k=0
updatefile = io.open(inputFile,"w")

for k=1,i do
    updatefile:write(modfilecontent[k] .. '\n')    --这是权限阻止我的地方
end

updatefile:close()

此外,如果有可能存在解决方案,并将此脚本加载到没有管理员权限的另一个人的计算机上,解决方案是否仍将起作用?


编辑: Piglet的解决方案将使用os.execute方法更改权限。 只要第一次作为管理员运行插件所使用的软件,权限就会被设置。从那时起,您就不再需要以管理员身份运行。

以下是我需要添加到程序开头的代码,当然不包括括号

os.execute('icacls "C:\\Program Files\\[software name]\\[folder name]" /grant Everyone:(OI)(CI)F /T')

原文链接 https://stackoverflow.com/questions/70424862

点赞
stackoverflow用户2858170
stackoverflow用户2858170

你可以使用 os.execute 来运行适当的 Windows 命令。

参见[如何使用命令行在 Windows 上向用户授予目录权限?] (https://stackoverflow.com/questions/2928738/how-to-grant-permission-to-users-for-a-directory-using-command-line-in-windows)。

或者使用支持此类功能的库。 可以看看https://keplerproject.github.io/luafilesystem/manual.html

如果有可能的解决方法,我将此脚本加载到另一个没有管理员权限的计算机上,解决方法仍然有效吗?

因为该用户无法以管理员身份运行 Lua,所以这是非常不可能的。这完全违反了不同用户级别的目的。

2021-12-20 16:40:42