Я хотел бы знать, есть ли какие-либо встроенные функции для получения пользователя, который запускает службу Windows, используя Wix 3.5. Я видел это сообщение, где говорится, что в Wix для проверки статуса услуги. Я думаю, что если это невозможно, то получить пользователя, который запускает службу, гораздо сложнее. Использование пользовательского действия — это крайняя мера. Спасибо.
Wix получает пользователя из работающей службы Windows
Ответы (1)
Вы можете выполнить поиск в реестре для HKLM\SYSTEM\CurrentControlSet\Services\ServiceName|ObjectName, но это предполагает, что значение реестра не обновлялось без перезапуска службы. (Возможно отключение).
Программно (настраиваемое действие) вы можете взаимодействовать с SCM API (win32) или WMI (атрибут StartName класса win32_service) для получения более подробной информации.
Я согласен с тем, чтобы избегать ЦС, но если единственной целью ЦС является сбор данных, а не изменение состояния машины, это можно сделать очень надежно с небольшим недостатком.
person
Christopher Painter
schedule
04.09.2012
Спасибо за Ваш ответ. Я нашел действительно полезной ветку реестра, которую вы упомянули. Не могли бы вы объяснить эту часть: но это предполагает, что значение реестра не обновлялось без перезапуска службы. Также я понял, что получаю значение в формате ДОМЕН\ИМЯ ПОЛЬЗОВАТЕЛЯ из реестра. Мне нужна только часть USERNAME, поэтому мне нужно подстроку значения. Я видел, что это невозможно сделать в Wix. Так или иначе, мне понадобится специальное действие для форматирования RegitryValue.
- person Herno; 04.09.2012
Если я назначу пользователя бобом и запущу службу, служба будет работать как боб. Если я затем установлю его на ed, он все равно будет работать как bob, пока я не остановлюсь и не запущу службу снова. Что касается второй части, в установщике Windows нет возможности разделения строк, и, следовательно, в WiX. Вам нужно будет написать пользовательское действие, которое считывает одно свойство, анализирует его, а затем записывает в другое свойство.
- person Christopher Painter; 04.09.2012
Спасибо, ответ очень полезен. В конце концов, мне все равно придется построить ЦС.
- person Herno; 04.09.2012