Wix получает пользователя из работающей службы Windows

Я хотел бы знать, есть ли какие-либо встроенные функции для получения пользователя, который запускает службу Windows, используя Wix 3.5. Я видел это сообщение, где говорится, что в Wix для проверки статуса услуги. Я думаю, что если это невозможно, то получить пользователя, который запускает службу, гораздо сложнее. Использование пользовательского действия — это крайняя мера. Спасибо.


person Herno    schedule 04.09.2012    source источник


Ответы (1)


Вы можете выполнить поиск в реестре для HKLM\SYSTEM\CurrentControlSet\Services\ServiceName|ObjectName, но это предполагает, что значение реестра не обновлялось без перезапуска службы. (Возможно отключение).

Программно (настраиваемое действие) вы можете взаимодействовать с SCM API (win32) или WMI (атрибут StartName класса win32_service) для получения более подробной информации.

Я согласен с тем, чтобы избегать ЦС, но если единственной целью ЦС является сбор данных, а не изменение состояния машины, это можно сделать очень надежно с небольшим недостатком.

person Christopher Painter    schedule 04.09.2012
comment
Спасибо за Ваш ответ. Я нашел действительно полезной ветку реестра, которую вы упомянули. Не могли бы вы объяснить эту часть: но это предполагает, что значение реестра не обновлялось без перезапуска службы. Также я понял, что получаю значение в формате ДОМЕН\ИМЯ ПОЛЬЗОВАТЕЛЯ из реестра. Мне нужна только часть USERNAME, поэтому мне нужно подстроку значения. Я видел, что это невозможно сделать в Wix. Так или иначе, мне понадобится специальное действие для форматирования RegitryValue. - person Herno; 04.09.2012
comment
Если я назначу пользователя бобом и запущу службу, служба будет работать как боб. Если я затем установлю его на ed, он все равно будет работать как bob, пока я не остановлюсь и не запущу службу снова. Что касается второй части, в установщике Windows нет возможности разделения строк, и, следовательно, в WiX. Вам нужно будет написать пользовательское действие, которое считывает одно свойство, анализирует его, а затем записывает в другое свойство. - person Christopher Painter; 04.09.2012
comment
Спасибо, ответ очень полезен. В конце концов, мне все равно придется построить ЦС. - person Herno; 04.09.2012