Наше приложение использует компонент, который требует лицензионный файл в каталоге с нашим исполняемым файлом, который является приложением .NET WinForms, хотя я думаю, что это несущественно для этого вопроса. При установке на некоторых машинах XP Pro (пока только три из нескольких сотен), компонент выдает лицензионное исключение. Поэтому я заново сгенерировал файл лицензии и отправил его поставщику компонента (EMC Captiva), где поставщик утверждает, что ошибка связана с тем, что группа «Пользователи» не имеет разрешений на чтение файла. Пользователь, который сталкивается с ошибкой, оказывается локальным администратором, но это помимо того, что мне все еще интересно узнать более общий вопрос.
Таким образом, мой вопрос, хранятся ли ACL в файле таким образом, что они следуют за файлом на протяжении всей его жизни, особенно когда файл лицензии был сгенерирован на моей машине dev (машина 1), сохранен в Subversion (машина 2), извлечен контроля исходного кода TeamCity (компьютер 3), упакованный в установщик с помощью InstallShield (компьютер 4), и, наконец, развернутый на компьютере клиента (компьютер 5), где он был установлен администратором? Как насчет того, чтобы после того, как я сгенерировал файл на своем компьютере разработчика (машина 1), загрузил его поставщику компонента через его сайт поддержки (машина 2), а специалист службы поддержки загрузил его на свой компьютер для проверки (машина 3)?
Я не знаю этого наверняка (вот почему я спрашиваю об этом здесь), но я предположил, что каждая машина Windows хранит ACL в некотором центральном каталоге / списке / таблице, управляемой NTFS, а не хранящейся в файле. Что происходит с ACL исходного файла, когда он копируется с одного компьютера на другой, сохраняется в Subversion, упаковывается в MSI и т. Д.? Может кто-нибудь указать мне хорошие ссылки, где я могу прочитать об этом?