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

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

NT INSTANS\INTERAKTIV  

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

NT AUTHORITY\INTERACTIVE  

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

Действительно ли этот вопрос «Как мне использовать secureObject»? Я не могу использовать таблицу LockPermissions, так как понимаю, что наследование удалено. Разрешения secureObject, похоже, требуют CreateDirectory, а не Directory...


person nray    schedule 04.10.2008    source источник
comment
Интересно, кому, черт возьми, пришла в голову идея перевести имена учетных записей на другие языки! Это приводит ко всевозможным проблемам там, где их не ожидают! Перевода псевдонимов действительно было бы достаточно!   -  person Sam    schedule 07.05.2009
comment
@Sam - Вы видели, как локализован неперемещаемый путь к данным приложения в Windows XP? Например. для Notes на шведском языке, C:\Documents and Settings\%USERNAME%\Lokala Inställningar\Application Data\Lotus\Notes\Data..., что означает ‹АНГЛИЙСКИЙ›\‹АНГЛИЙСКИЙ›\‹АНГЛИЙСКИЙ›\‹ШВЕДСКИЙ›\‹АНГЛИЙСКИЙ ›\‹АНГЛИЙСКИЙ›\и т.д... Какая от этого польза?   -  person nray    schedule 09.05.2009
comment
@Sam - имена учетных записей являются псевдонимами.   -  person Paul Lalonde    schedule 26.08.2009


Ответы (2)


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

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

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

<Directory ...>
   <Component ...>
      <CreateFolder>
         <PermissionEx User="[SID_INTERACTIVE]" .../>
      </CreateFolder>
   </Component ...>
</Directory ...>
person Paul Lalonde    schedule 04.10.2008

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

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

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

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

person Mihai Limbășan    schedule 04.10.2008
comment
Спасибо, я имел в виду интерактивного пользователя на любом языке, так что вы правы в том, что если я смогу использовать SID, который разрешается для пользователя, я решу языковую проблему. Мне все еще нужен хороший пример в WiX того, как это сделать. - person nray; 04.10.2008
comment
Да, использование SID - это исправление. Я отредактировал свой ответ, чтобы включить новую информацию. Возможно, вы также могли бы отредактировать свой вопрос, чтобы лучше отразить то, что мы узнали. - person Mihai Limbășan; 04.10.2008