Icacls,程序文件(x86)子文件夹中的权限问题

时间:2017-08-20 19:27:14

标签: windows file-permissions

我遇到的问题非常持久。 我有一个自解压rar文件,比如files.rar。 这在C:\ Program Files(x86)\ CompanyName \ XDS \ bin

中未压缩

现在启动批处理文件install.bat,它位于bin文件夹中。 32位版本的cmd.exe执行此批处理文件。 到目前为止一切顺利,这一切都运作良好。

但是:我必须重命名bin文件夹中的一个文件并删除另一个文件。您可能想知道,为什么要在那里放一个需要删除的文件?好吧,我有一个32位和64位版本的驱动程序。根据目标,必须将其中一个重命名为NatUSB.dll,而另一个必须删除。

如果我运行此批处理文件(简化):

icacls natusb*.dll /inheritance:r /grant:r everyone:(OI)(CI)F
icacls natusb*.dll /T

rename NatUSB_32_ezusb.dll NatUSB32.dll
del    NatUSB_32_winusb.dll

我有以下问题:

  • 我需要管理员权限,这是不可接受的 我公司的目的
  • 即使这样,我也会得到“拒绝访问” 重命名,可能因为已经有一个NatUSB32.dll。 但是,即使作为管理员我也无法删除此文件:“访问是 拒绝“
  • del NatUSB_32_winusb.dll也提供“访问被拒绝”

然后我尝试将这两个文件复制到bin2。原因是:如果我执行“icacls bin / T”,我获得权限信息的文件列表太长,所以我希望只为几个文件获取此信息。不幸的是,我得到“访问被拒绝”(尝试复制到bin2时),即使管理员和系统的文件权限是“完全控制”。 顺便说一句,只是icacls natusb * .dll / T没有给出任何权限,这似乎只适用于整个文件夹。

当我在XSD(父)文件夹中并执行“icacls bin2 / inheritance:r / grant:r everyone:(OI)(CI)F” 接下来,我做“icacls bin2 / T”

bin2所有人:(OI)(CI)(F) BUILTIN \用户:(OI)(CI)(F)

我仍然无法将几个nat * .dll从bin复制到bin2。

如果我尝试在bin文件夹上设置访问权限(与上面非常相似),我会收到“bin:句柄无效”。

BTW,bin的权限如下:

bin NT SERVICE\TrustedInstaller:(I)(F)
    NT SERVICE\TrustedInstaller:(I)(CI)(IO)(F)
    NT AUTHORITY\SYSTEM:(I)(F)
    NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
    BUILTIN\Administrators:(I)(F)
    BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
    BUILTIN\Users:(I)(RX)
    BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)
    CREATOR OWNER:(I)(OI)(CI)(IO)(F)

如前所述,有了icacls,我无法改变这一点。顺便说一句,安全选项卡不显示重复的组或名称。

简而言之:我在重命名,删除文件(必须紧急,解决当前问题)以及将文件从C:\ Program Files(x86)\ XXX \ XDS \ bin复制到XDS \ bin2时遇到问题。

要解决这些问题,我需要在脚本中使用icacls或其他内置命令来强制访问权限。在文件夹的安全性选项卡中设置访问权限是不可接受的:它需要从脚本完成。另外:我们无法安装第三方软件,如果它很大或具有商业许可证,则无法安装。如果所有其他方法都失败,可以接受几KB,也就是1MB的免费使用工具。

解决方案也不需要管理员权限。

1 个答案:

答案 0 :(得分:0)

这是你的主要问题:

icacls natusb*.dll /inheritance:r /grant:r everyone:(OI)(CI)F

(OI)(CI)标志仅对目录有效,对文件无效。由于标志无效,因此将忽略该权限。因此,此命令的净效果是从文件中删除所有权限,隐式拒绝所有人(包括管理员)的访问权。

如果取出无效标志,该命令将按预期工作:

icacls natusb*.dll /inheritance:r /grant:r everyone:F

但是,鉴于您对问题的描述,看起来您需要管理员访问权限,因为现有文件夹的权限对于非管理员来说是只读的。除非您可以安装到其他文件夹(例如,在用户的Application Data文件夹中)或提前更改目标文件夹权限,否则无法解决此问题。

请注意,更改文件夹权限可能会带来安全漏洞。