【发布时间】:2017-08-20 19:27:13
【问题描述】:
我的问题非常持久。 我有一个自解压的 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) 内置\用户:(OI)(CI)(F)
我仍然无法将几个 nat*.dll 从 bin 复制到 bin2。
如果我尝试在 bin 文件夹上设置访问权限(与上面非常相似),我会得到“bin:句柄无效”。
顺便说一句,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 或其他内置命令来强制访问权限。在文件夹的安全选项卡中设置访问权限是不可接受的:它需要通过脚本完成。另外:我们不能安装第 3 方软件,如果它很大或有商业许可证,当然不能。几 kB,也许 1MB 是免费使用的工具,如果一切都失败了,可能是可以接受的。
该解决方案也应该不需要管理员权限。
【问题讨论】: