我们的应用程序使用,需要与我们的可执行文件,这恰好是一个.NET WinForms应用程序,虽然我认为这是不重要的对这个问题的目录许可文件的组成部分。当一些XP专业版的机器上安装(只有三个出几百迄今),该组件将引发许可例外。所以我再生的许可文件,并将其发送到组件供应商(EMC Captiva的),其中,销售商声称的错误是由于“用户”组对文件没有读权限的事实。谁遇到错误的用户恰好是本地管理员,但是这是除了点作为我仍然好奇的更普遍的问题。

所以我的问题是,被存储在一个文件中,使得它们遵循在其整个生命的文件,特别是当被我开发机(机1)中,存储在颠覆上生成的许可文件的ACL(机2)中,检出它被由管理员安装由TeamCity的(机器3)源控制的,通过的InstallShield(机器4)打包成一个安装程序,最后部署到客户机(机5)?什么后,我产生我的开发计算机上的文件(机器1),它通过其支持网站上传到组件供应商(机2),以及支持人员就下载到他们的机器进行检查(机器3)?

我不知道这是肯定的(这就是为什么我问在这里),但我认为每个Windows机器存储的ACL在一些中央目录/列表/ NTFS通过管理,而不是存储在文件中的表格。当它从一台计算机复制到另一个存储在颠覆,包装发生了原始文件的ACL什么为MSI等?有人能指出我一些很好的参考,我可以在这读了?

有帮助吗?

解决方案

ACL存储在NTFS分区做所有背景管道的一部分 - 的MFT(主文件表)

在ACL不遵循文件各处,因为它不是文件的一部分(就像它的文件名是元数据)。该文件可以跨越分割型边界(NTFS-> FAT)中,ACL不能。

现在,如果你的移动的一个NTFS分区中的文件,你可能会得到的印象是,实际的ACL按照文件来解决。这是因为,在移动过程中,只有在MFT文件名实际上是改变了。其他一切保持不变。

如果您复制文件或将其移动到其他分区或计算机(这实际上是一个复制+删除操作),复制的文件将默认继承的权限,这是新的容器(只有可继承的,要准确)

然而,存在是能够保持一个文件的ACL复制操作之后(通过简单地重新创建它在复印操作之后的目标文件)甚至超过分区或计算机边界的工具。 XCOPY能做到这一点,等等。

但由于一个ACL可以包含在“域拥有”小岛屿发展中国家的ACL条目可能没有实际是有意义的,是不是同一个域的一部分,目标计算机(例如带回家NTFS格式的USB驱动器时) 。在这种情况下,ACL条目将没有任何效果。

其他的SID“众所周知”的,像“系统” SID。这些实际上将跨越域边界识别。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top