Как добавить интерактивного пользователя в каталог в локализованной Windows с помощью WiX?

StackOverflow https://stackoverflow.com/questions/170140

  •  05-07-2019
  •  | 
  •  

Вопрос

Как добавить шведского интерактивного пользователя,

NT INSTANS\INTERAKTIV  

или английский интерактивный пользователь,

NT AUTHORITY\INTERACTIVE  

или любая другая локализованная группа пользователей с разрешениями запись в ACL папки программы?

Является ли этот вопрос на самом деле " как мне использовать secureObject " ;? Я не могу использовать таблицу LockPermissions , потому что я понимаю, что наследование удалено. Разрешения secureObject , по-видимому, требуют CreateDirectory , а не Каталог ...

Это было полезно?

Решение

В последних выпусках Wix вы можете получать локализованные имена часто используемых встроенных имен пользователей и групп через свойство. Например, WIX_ACCOUNT_NETWORKSERVICE содержит локализованное имя учетной записи сетевой службы. К сожалению, по состоянию на 3.0.4513 NT AUTHORITY \ INTERACTIVE среди них нет.

Существует пример пользовательского действия MSI, которое создает свойства для многих встроенных имен пользователей и групп. Загрузите его здесь . Добавьте центр сертификации в установщик Wix и запланируйте его в начале последовательности выполнения установки.

Получив локализованное имя учетной записи, добавьте элемент PermissionEx, чтобы изменить ACL вашего каталога. Например:

<Directory ...>
   <Component ...>
      <CreateFolder>
         <PermissionEx User="[SID_INTERACTIVE]" .../>
      </CreateFolder>
   </Component ...>
</Directory ...>

Другие советы

Невозможно как таковой добавить оба имени учетной записи в ACL, поскольку они являются одинаковыми. Имя, которое вы видите, соответствует SID, и этот SID идентичен в английской и шведской локализациях. В случае ИНТЕРАКТИВНОЙ группы этот SID равен S-1-5-4 .

Я давно не следил за WiX, но я предполагаю, что должен быть способ указать SID для ACL вместо имен учетных записей. Вы никогда не должны полагаться на имя учетной записи для известных учетных записей, если нет абсолютно никакого способа избежать этого. Вот список известных идентификаторов безопасности для справки.

Изменить: Похоже, что этот пост предлагает решение вашей проблемы с помощью настраиваемого действия для преобразования идентификаторов SID в имена учетных записей - по-видимому, WiX не из коробки поддерживает использование идентификаторов SID для объектов Permission или PermissionEx.

Вот более авторитетный список известных идентификаторов безопасности в Q243330 базы знаний Microsoft.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top