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

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

NT INSTANS\INTERAKTIV  

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

NT AUTHORITY\INTERACTIVE  

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

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

Ответы [ 2 ]

6 голосов
/ 04 октября 2008

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

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

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

<Directory ...>
   <Component ...>
      <CreateFolder>
         <PermissionEx User="[SID_INTERACTIVE]" .../>
      </CreateFolder>
   </Component ...>
</Directory ...>
4 голосов
/ 04 октября 2008

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

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

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

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

...