我们偶尔会发现文件夹的权限损坏,并出现以下错误:No permissions have been assigned for this object
受影响的系统主要是 Windows 7,但也包括 Terminal Server 2008 及更高版本,不受影响的是 Server 2003 Terminal Server。
问题
创建子文件夹时会出现问题。由于子文件夹不继承任何权限,因此它仅获得默认权限(所有者等)。
已经完成了
我们比较了受影响的系统,但它们在安装的软件或驱动程序方面没有显著的匹配。
目前,我们正在寻找一种方法,在软件出现错误之前检测出这些故障。AccessEnum 等工具无法发现它。Chksk 找不到任何错误。
但我们最重要的问题是,造成这种情况的原因是什么?
有人有这样的经历吗?
编辑:
主要是本地临时文件夹(C:\Users\[用户]\AppData\Local\Temp)本身受到错误的影响。至少我们的软件会在那里发现错误。但我知道,其他文件夹也会受到影响。
我们在大约 40 个客户系统上发现了这个错误,一旦修复,它似乎就不会再出现。
修复起来很简单。将系统 - 完全控制(或其他内容)添加到权限中,旧权限就会再次出现。
編輯2
问题究竟是怎样的:
- 临时文件夹的权限已损坏(如屏幕截图所示)
- 在这种状态下,每个人都可以对文件夹执行任何操作(删除、创建等)。
- 我们的安装程序以提升的权限运行并创建一个子文件夹
.\temp\ProgramInfos
。这样就可以了(参见上文)。 - 由于临时文件夹没有活动权限,因此该
ProgramInfos
文件夹不会继承任何内容。因此ProgramInfos
仅获得以下权限:Administrators, System
- 安装的应用程序稍后运行不会提升
- 未提升权限的用户无法访问该文件夹 - 在未提升权限的状态下他不是管理员。
这不是一般错误。我们已在数万台计算机上安装了此软件,到今天为止只有大约 40 台出现了此错误。
(由于缺少英语系统,出现该错误时屏幕截图无法显示真实信息,但德语中是一样的)
答案1
Temp 文件夹几乎是 Windows 上最自由的文件夹。默认情况下,PC 的“用户”组有完全控制因此你不能相信它处于任何预期状态。
唯一的答案是改变您的安装程序,以确保它将所需的权限应用于它正在创建的文件夹,而不是依赖于(可能缺失/不正确的)继承的权限。