我们的应用程序使用的组件需要目录中的许可证文件和我们的可执行文件,这恰好是一个 .NET WinForms 应用程序,尽管我认为这对这个问题无关紧要。当安装在某些 XP Pro 机器上时(目前只有几百台机器中的三台),该组件会引发许可证异常。所以我重新生成了许可证文件并将其发送给组件供应商 (EMC Captiva),供应商声称该错误是由于“用户”组对该文件没有读取权限。遇到错误的用户恰好是本地管理员,但除此之外,我仍然对更一般的问题感到好奇。
所以我的问题是,ACL 是否存储在文件中,以便它们在文件的整个生命周期中都跟随文件,特别是当许可证文件是在我的开发机器(机器 1)上生成、存储在 Subversion(机器 2)中、从源代码控制中签出时由 TeamCity(机器 3),由 InstallShield(机器 4)打包成安装程序,最后部署到由管理员安装的客户机器(机器 5)?在我的开发机器(机器 1)上生成文件后,如何通过他们的支持站点(机器 2)将其上传到组件供应商,然后支持人员将其下载到他们的机器以供检查(机器 3)?
我不确定这一点(这就是我在这里问它的原因),但我假设每台 Windows 机器都将 ACL 存储在由 NTFS 管理的某个中央目录/列表/表中,而不是存储在文件中。当原始文件的 ACL 从一台机器复制到另一台机器、存储在 Subversion 中、打包到 MSI 等时,会发生什么情况?有人可以指出我可以阅读的一些好的参考资料吗?