5

У меня есть довольно простой командный файл, который делает только одно - « net start myservice ». Этот пакетный файл становится доступным для ярлыка в группе программ установщиком, так что пользователи могут просто щелкнуть значок и начать (или остановить) работу. Все хорошо работает в XP для пользователей с правами администратора. Но на Win7 дела идут не так, как надо, поскольку пакет нужно явно запускать "как администратор", и часто пользователи этого не знают. Итак, мой вопрос, как сделать это дружелюбным? Говорить пользователям, что нужно щелкать правой кнопкой мыши и запускать от имени администратора на Win7 и просто нажимать на XP, - довольно странный поворот. Мне нужна умная автоматическая простая штучка.

Возможно, я мог бы использовать «runas /user:administrator» в самом пакете, но эта учетная запись "администратор" может быть недоступна на некоторых машинах. Я ищу универсальное решение для установки таких вещей на любую коробку Windows.

Идеи? Как бы вы это сделали?

3 ответа3

3

Загрузите Elevation PowerToys для Windows от Microsoft. Затем вы можете включить сценарии в процесс установки, чтобы запустить из командного файла elevate net start servicename и он выдаст им запрос на повышение прав UAC. Пока пользователь имеет административные привилегии на компьютере или может заставить администратора выполнять повышение прав для них, он будет запускать команду с повышенными привилегиями и должен работать нормально. Не нужно указывать имя пользователя или что-либо еще. В этой статье есть целый раздел о создании скрипта, который может определить, работает ли он с достаточным уровнем доступа, а если нет, поднять его.

2

Измените разрешения службы myservice чтобы ее могли запускать обычные пользователи.


Самый простой способ сделать это - использовать Process Explorer: запустить службу, дважды щелкнуть по ее процессу в ProcExp, открыть вкладку Services и использовать кнопку Permissions .

(Process Explorer)

(ProcExp: Недвижимость - Услуги)


Трудный путь:

C:\>sc sdshow Schedule

D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPLOCRRC;;;PU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)

Отображаемый текст является строкой дескриптора безопасности. Каждый (...) элемент является строкой ACE.

Например, добавление этого к SD позволит пользователям контролировать сервис:

(A;;GX;;;BU)

BU - строка SID для группы «Встроенные пользователи». Для большинства целей предоставления GX GENERIC_EXECUTE должно быть достаточно.

Примечание. "Права" в строке ACE, по-видимому, не соответствуют очевидным фактическим данным разрешениям. Например, "Запустить службу" - это RP (READ_PROPERTY), а "Остановить службу" - это WP (WRITE_PROPERTY).

0

Проверьте PsTools, он содержит приложение с именем psservice.exe , чтобы запустить службу, он использует следующую командную строку:

psservice.exe [\\Computer [-u Username [-p Password]]] start <svc>

Если это будет выполняться пользователями с ограниченными правами, то вы можете обернуть пакетный файл в исполняемый файл, чтобы пользователи не видели пароль администратора.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .