У меня есть довольно простой пакетный файл, который делает всего одну вещь - "сетевой запуск myservice". Этот пакетный файл получает редактора ярлыка в группе программ установщиком так, чтобы пользователи могли просто нажать на значок и получить запущенные вещи (или остановился). Все работы хорошо в XP для пользователей с правами администратора. Но вещи становятся волосатыми на Win7 как пакетная потребность, которая будет выполнена "как администратор" явно, и часто пользователи не знают это. Таким образом, мой вопрос состоит в том, как сделать эту товарищескую встречу? Говоря пользователям щелкнуть правой кнопкой и работать, поскольку администратор на Win7 и просто нажать на XP является видом странного скручивания. Мне нужна умная автоматическая простая штука.
Я мог, вероятно, использовать "runas/user:administrator" в самом пакете, но эта учетная запись "администратора" не могла бы быть доступной на некоторых машинах. Я ищу универсальное решение для установки вещей как это на любом поле Windows.
Идеи? Как Вы сделали бы это?
Загрузите Повышение PowerToys для Windows от Microsoft. Можно затем включать сценарии в процесс установки так, чтобы можно было работать от пакетного файла elevate net start servicename
и это даст им подсказку повышения контроля учётных записей. Пока пользователь имеет административные привилегии на компьютере или может заставить administator выполнять повышение для них, это выполнит команду с поднятыми полномочиями и должно работать просто великолепно. Никакая потребность указать имя пользователя или что-либо. Существует целый раздел в той статье о создании сценария, который может обнаружить, если это работает с достаточным уровнем доступа и в противном случае поднимает себя.
Измените полномочия myservice
сервис, чтобы позволить этому быть запущенным обычными пользователями.
Простой способ сделать это должно использовать Проводник Процесса: запустите сервис, дважды щелкните по его процессу в ProcExp, откройте вкладку Services и используйте кнопку Permissions.
Твердый путь:
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
).
Проверьте PsTools, он содержит названное приложение psservice.exe
, для запуска сервиса это использует следующую командную строку:
psservice.exe [\\Computer [-u Username [-p Password]]] start <svc>
Если это будет выполнено restriced пользователями, то можно хотеть перенести пакетный файл в exe, чтобы препятствовать тому, чтобы пользователи видели пароль администратора.