1 / 1 / 1
Регистрация: 03.11.2010
Сообщений: 116
|
|
1 | |
Запуск программы из сервиса под юзером25.09.2013, 16:18. Показов 8114. Ответов 15
Метки нет (Все метки)
Что делаю:
Запускаю программу, которая ставит сервис - основная цель которого мониторить, запущена ли программа, и если нет - запускать. Программу запускаю под юзером. Сервис ставится и запускается от System. Теперь когда сервис запускает прогу, то тоже от System. Вопрос: Как запустить прогу из сервиса от юзера(с правами юзера)?
0
|
25.09.2013, 16:18 | |
Ответы с готовыми решениями:
15
Запуск приложения Службой под определенным юзером Запуск приложения от имени админа без ввода пароля под юзером Регистрация и запуск произвольного сервиса под Win2000/XP Запуск сервиса(IIS) из программы |
26.09.2013, 09:37 | 2 |
http://stackoverflow.com/quest... redentials пока посмотри вот это.
0
|
Ушел с форума
|
|
26.09.2013, 09:43 | 3 |
А если юзер еще не залогинен ?
А если залогинено два или больше юзеров - под каким запускать ?
0
|
1 / 1 / 1
Регистрация: 03.11.2010
Сообщений: 116
|
|
26.09.2013, 11:33 [ТС] | 4 |
На счет первого - хз. Ждать в сервисе появление юзеров.
На счет второго, из списка юзеров выбрать кого-то, админа к примеру.
0
|
Ушел с форума
|
|
26.09.2013, 13:46 | 5 |
Приходилось такое делать много раз, в разных
Насколько мне известно, "родных" средств в .NET для такой задачи нет, придется делать через interop с нативным кодом. Нужно в службе ловить событие OnSessionChange, в него придет SessionChangeDescription. А там будет ID сессии, в которой произошло событие и тип самого события. Для данной задачи в первую очередь интересен SessionLogon - вход пользователя в систему. Имея ID сессии, получаем маркер безопасности залогиневшегося в ней пользователя, для этого есть нейтив- функция WTSQueryUserToken. Дальнейшие действия тоже через interop: создать блок переменных окружения, используя полученный маркер - CreateEnvironmentBlock, а потом запустить новый процесс в контексте безопасности юзера - CreateProcessAsUser. В структуру STARTUPINFO, которая передается аргументом для CreateProcessAsUser, нужно обязательно вписать lpDesktop = WinSta0\Default - это имя оконной станции (WinSta0) и десктопа (Default), где будет создан новый процесс. Пара моментов: 1) Службу нужно добавить в одну из групп загрузки, чтобы она стартовала до того, как первый пользователь успеет залогиниться. 2) CreateProcessAsUser может не сработать с первого раза, т.к. сессия на тот момент может быть еще не совсем готова для создания в ней нового процесса. Можно вызывать функцию в цикле, с небольшой задержкой, пока не сработает. 3) WTSGetActiveConsoleSessionId для определения ID активной сессии пользователя лучше не использовать, т.к. если юзер будет в этот момент находиться на десктопе входа в систему (winlogon), функция может вернуть ID совсем не той сессии, в которой этот юзер залогинен. 4) Для успешного вызова WTSQueryUserToken у процесса должна быть привилегия SE_TCB_NAME ("Trusted Computer Base"), она только у служб LocalSystem. 5) Если нужно, чтобы новый процесс при старте запрашивал повышение прав до уровня администратора (UAC Elevation Prompt), это лучше всего сделать через exe-"переходник", напрямую не выйдет. Т.е. сначала создаем в сессии пользователя обычный процесс, а он уже запускает тот exe, который нужно, но не через CreateProcessAsUser, а с помощью ShellExecute(Ex).
2
|
1 / 1 / 1
Регистрация: 03.11.2010
Сообщений: 116
|
|
26.09.2013, 14:12 [ТС] | 6 |
Ох и ни *** себе телодвижений то делать... не то чтобы не понятно, но что-то уж очень муторно. Проще никак да =( ???
0
|
Ушел с форума
|
|
26.09.2013, 14:19 | 7 |
Проще добавить программу в автозагрузку и пускай себе стартует при
входе пользователей в систему. Запускать из службы обычно надо только при каких-то особых условиях, когда все остальное не подходит. Нет там абсолютно ничего муторного. Поставить обработчик, заполнить пару структур и вызвать три функции.
0
|
1 / 1 / 1
Регистрация: 03.11.2010
Сообщений: 116
|
|
26.09.2013, 14:22 [ТС] | 8 |
Добавлено через 14 секунд
Так как раз и надо запускать не только при запуске системы, но и при слете программы. Сервис мониторит жива ли прога и запускает, если нет. Проблема появилась вообще из-за сетевых проблем. Программа должна создать на удаленном компе папку, но если запускается от SYSTEM, то не имеет прав. А если сервис сделать NetworkService то тогда с запуском проги целая туча проблем. Так что основная проблема как потом прогой из под SYSTEM создать папку на другом компе.
0
|
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
|
|
26.09.2013, 14:47 | 9 |
сервис может работать и от доменного юзера, который может иметь права создавать папки на всех компах, на которых ему разрешили.
0
|
1 / 1 / 1
Регистрация: 03.11.2010
Сообщений: 116
|
|
26.09.2013, 15:03 [ТС] | 10 |
Тогда как запустить сервис от доменного юзера а не от System ???
0
|
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
|
|
30.09.2013, 19:58 | 11 |
В настройках сервиса указать доменного юзера.
0
|
1 / 1 / 1
Регистрация: 03.11.2010
Сообщений: 116
|
||||||
01.10.2013, 16:29 [ТС] | 12 | |||||
А если я программно создаю сервис к примеру так:
0
|
Ушел с форума
|
|
01.10.2013, 16:46 | 13 |
Потому что работает политика безопасности под названием "разрешить использование
пустых паролей только при консольном входе". Иными словами, с пустым паролем стартануть службу нельзя.
0
|
1 / 1 / 1
Регистрация: 03.11.2010
Сообщений: 116
|
|
01.10.2013, 16:52 [ТС] | 14 |
Как тогда стартануть то? Без пароля? Где отключить ?
0
|
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
|
|
03.10.2013, 21:37 | 15 |
Без пароля это неправильно. Это вопрос безопасности. Так трудно ввести пароль?
Обычно я создаю учётную запись с правами на конкретные ресурсы и от этой учётной записи у меня сервисы работают.
0
|
8 / 5 / 1
Регистрация: 30.03.2017
Сообщений: 75
|
|
28.02.2019, 04:36 | 16 |
Друже а как ты сделал? Поможешь?
Добавлено через 1 час 15 минут Разобрался уже.
0
|
28.02.2019, 04:36 | |
28.02.2019, 04:36 | |
Помогаю со студенческими работами здесь
16
МФУ не печатает под Юзером ADUC отсутвует под обычным юзером запуск программы из под си Запуск программы под Видео Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |