Мне необходимо передать привилегии для работы с реестром, дровами и дебаг приложеню, которе запущено от имени гостя. (т.е. без прав) Мне пришла светлая идея (а светлая ли?) создать сервис, который ждет появление пайпа, читает из пайпа PID клиента и дает ему все права (OpenProcess, OpenProcessToken, AdjustTokenPrivileges). Клиент создает трубу, передает PID. Сервис "дает" права, все проходит как по маслу, ни одной ошибки, но прав клиент не получает. Пробовал запускать клиента от админа - всё ок. Дебаг клиент получает (и дебаггит), а от гостя - нет. В чем может быть дело?
Да, гестовый юзер запускает приложение и приложению нужны права (дебаг, реестр, дрова). Сервис должен по идее их предоставлять (путем AdjustTokenPrivileges), но этого не происходит. Почему? Как дать права "бесправному"?
Вот этого ответа я и ожидал Может ещё кто-то что-то скажет и всё будет руль А пока остановлюсь на передаче инфы через сервис.
Zero Ice что-то я не понял, из-за чего весь сыр бор и головняк ??? если у тебя есть посвещённый в дела сервис, ну и что тебе стоит перехватить CreateProcess либо NtCreateProcess из сервиса, вернуть код удачного результата, а тем временем процесс запускается самим сервисом и в наследство получает всё, что ему надо. Не понимаю, над чем тут голову ломать???
Блин. Ребята. Не страдайте хернёй. Сервис получает токен жертвы. Дальше он может что угодно может делать с этим токеном - понижать, повышать привилегии, опускать по групах, поднимать до SID системы. А попроще - CARDINAL прав. Пусть процес скажет сервису, что он хочет пи-пи и тихо умрёт. Сервис запустит процес с десктопом \WinSta0\Default и все дела - процес теперь почти ничем не хуже сервиса.
2CARDINAL У меня есть вообще тогда дурацкий вопрос: Сервис зареган с SERVICE_AUTO_START. Когда админ загружает машину и заходит под своим акком, то сервис светится в списке процессов. Затем смена пользователя (админ не выходит) и у гостя сервиса в списке процессов нет, но сервис работает. Теперь прога говорит, что хочет сдохнуть и сервис запускает новую копию со своими правами. Но привелигированная прога создается на десктопе админа. 8) Вопрос тупой - как фиксить?
Есть прога, которая должна регать дрова и дебаггить. Если мы запускаем её под админом - то проблем нет. Все она сама полчит и будет дабаггить. А что делать, если её запусить под гостем? Как получить права на дебаг и загрузку дров?
Да никак. Я знаю три стандартных десктопа: дефолтный, Winlogon, и хранителя экрана. Запусти на Winlogon-e. Чем тебе тогда Run As... не подходит ?
а как по токену привелегии поднять? Если CreateProcessAsUser, то чей токен передавать? Сервиса? Если да, то как отоброзить прогу на рабочем столе гостя?
что проверять-то? CreateProcessAsUser с токеном сервиса создаст прогу с окошком на столе админа (а мне надо чтобы окошко было на рабочем столе того юзера, кто запустил прогу, а не сервис) А файловая система какое имеет отношение к вопросу? Есть все от FAT16 до NTFS
DDDDDDDDDDDDDDDDDDDDDDDDDDDDD Супер! DDD Вот это ты порадовал старика Взгрел, так взгрел! DD Прочти пост Кардинала Вон он по теме сказал (только я не знаю как сделать окошко видимым (а то оно видно только админу 8))))).
А имя токены, привилигированный процесс и прочее нельзя поднять привелегии? Вообще никак? Если и правда нельзя, то как запусить приложение, чтобы оно было видно нужному пользователю?
Zero Ice 1) Завтра получишь код для работы с токенами. 2) Имперсонализация - рулез. Учитывая то что хотя она работает пусть и с потоками, но всё же это маркеры доступа. Было бы желания, можно сделать и такое. Ms Rem не даром ссылку дал. 3) Run As... это Run As... 4) Юзать поиск ещё никто не запрещал, а наоборот это дело поощряеться. В Сети куча кода по работе с токенами. Исключением даный ресурс тоже не являеться. 5) Сначала пробуй, а потом спрашивай. Таким образом получаешь опыт. Готовые решения ещё никому добрую службу не сослужыли. P.S. Насчёт гнутых пальцев - некоторые люди имеют на это право, так же как и ты задавать вопроссы, главное не переусердствовать.
2DelExe Agree. 100%. В сети искал инфу, но связанную с процессами... Вот то, что ты сказал про потоки - очень интересно. Я об этом не думал (Щаз тоже поищу сам). Ссылка тоже классная, но RunAs я не знаю как прицепить к этой задаче.
2DelExe TNX! Самый рульный пост по теме OpenProcessToken(GetCurrentProcess,TOKEN_ALL_ACCESS ,&tokenh); DuplicateToken(tokenh,SecurityImpersonation,&tokenh); SetThreadToken(&htid,tokenh); Done.