我遇到的问题非常持久。 我有一个自解压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
我有以下问题:
然后我尝试将这两个文件复制到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的免费使用工具。
解决方案也不需要管理员权限。
答案 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文件夹中)或提前更改目标文件夹权限,否则无法解决此问题。
请注意,更改文件夹权限可能会带来安全漏洞。