Автозапуск режима RunAs
От: Contact Россия http://www.lact.ru
Дата: 14.03.05 07:14
Оценка:
Когда работаешь от учеток с ограниченными правами, иногда необходимо выполнять программы с административными привилегиями. Особенно это касается инсталляций.
Делается это, как известно, с помощью использования режима запуска Runas.

Теперь интересное. Встречался с таким, что для некоторых программ, в случае запуска от неадминской учетки, автоматически открывается диалог runas. Это очень удобно.

Вопрос: как сделать так, чтобы моя программа тоже стала такой умной?
(имеется ввиду модификация собственно программы (exe), а не решения с ярлыками и пр.)
С уважением,
Павел Васёв
-------------
LineAct — автоматическое создание Вашего сайта под ключ: дизайн, хостинг, online cms, хранилище файлов — стоит всего 6000 р...
Re: Автозапуск режима RunAs
От: Pavel Dvorkin Россия  
Дата: 14.03.05 07:38
Оценка:
Здравствуйте, Contact, Вы писали:

C>Теперь интересное. Встречался с таким, что для некоторых программ, в случае запуска от неадминской учетки, автоматически открывается диалог runas. Это очень удобно.


C>Вопрос: как сделать так, чтобы моя программа тоже стала такой умной?

C>(имеется ввиду модификация собственно программы (exe), а не решения с ярлыками и пр.)

CheckTokenMembership, там есть пример функции IsUserAdmin.
With best regards
Pavel Dvorkin
Re[2]: Автозапуск режима RunAs
От: Contact Россия http://www.lact.ru
Дата: 15.03.05 19:27
Оценка:
Если я не ошибаюсь, данный подход предполагает программное определение
вхождения пользователя в группу администраторы с последующим... чем?
1) поменять владельца процесса нельзя (можно???)
=> необходимо как-то показать диалог ранэс (как?) и получить результаты ввода
2) если идти не по варианту (1), то в голову приходит только идея вызова
ранэс-диалога на самом себе
=> опять таки, как вызвать ран-эс на программу? (в первом случае нам
надо вызвать этот диалог и получить результаты ввода, а в этом случае
просто вызвать ранэс-режим на exe)

Или, путь 3? (какой..?)
С уважением,
Павел Васёв
-------------
LineAct — автоматическое создание Вашего сайта под ключ: дизайн, хостинг, online cms, хранилище файлов — стоит всего 6000 р...
Re[3]: Автозапуск режима RunAs
От: Pavel Dvorkin Россия  
Дата: 16.03.05 07:31
Оценка:
Здравствуйте, Contact, Вы писали:

C>Если я не ошибаюсь, данный подход предполагает программное определение

C>вхождения пользователя в группу администраторы с последующим...

принятием решения, можно ли просто делать CreateProcess или же необходимо запросить логин/пароль и вызвать CreateProcessAsUser

C>=> опять таки, как вызвать ран-эс на программу?


Не знаю, но сам диалог смоделировать не проблема. А вот выбор юзера как в него включить — ИМХО здесь что-то пробегало, поищи.
With best regards
Pavel Dvorkin
Re[4]: Автозапуск режима RunAs
От: Andrew S Россия http://alchemy-lab.com
Дата: 16.03.05 09:01
Оценка:
C>>Если я не ошибаюсь, данный подход предполагает программное определение
C>>вхождения пользователя в группу администраторы с последующим...

PD>принятием решения, можно ли просто делать CreateProcess или же необходимо запросить логин/пароль и вызвать CreateProcessAsUser


Не покатит.

In Windows 2000, the process calling LogonUser requires the SE_TCB_NAME


Поэтому и есть RunAs, который выполнен в виде сервиса. Насколько я понимаю, вопрошающего интересует именно апи к нему. Я этого не копал Но советую поискать в группо-гугле, наверняка там что то есть...
PS
Да, учтите, что более-менее адекватные пользователи нафиг вырубают этот сервис во избежание.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re: Автозапуск режима RunAs
От: DmSK  
Дата: 16.03.05 12:44
Оценка:
Здравствуйте, Contact, Вы писали:

C>Когда работаешь от учеток с ограниченными правами, иногда необходимо выполнять программы с административными привилегиями. Особенно это касается инсталляций.

C>Делается это, как известно, с помощью использования режима запуска Runas.
Механизм называется — имперсонализация, имитация прав) Runas — это программа, а не режим

C>Теперь интересное. Встречался с таким, что для некоторых программ, в случае запуска от неадминской учетки, автоматически открывается диалог runas. Это очень удобно.

ImpersonateLoggedOnUser, окно не открывает. но "runas" реализована через эту функцию

C>Вопрос: как сделать так, чтобы моя программа тоже стала такой умной?

C>(имеется ввиду модификация собственно программы (exe), а не решения с ярлыками и пр.)
Права админа? такой умной не станет. но поумничать может

Удачи.
... << RSDN@Home 1.1.3 stable >>
Re[2]: Автозапуск режима RunAs
От: Andrew S Россия http://alchemy-lab.com
Дата: 17.03.05 08:02
Оценка:
DSK>ImpersonateLoggedOnUser, окно не открывает. но "runas" реализована через эту функцию

Повторюсь — в обычном приложении не пойдет, только начиная с XP и выше. Под win2k вы просто не сможете получить токен для имерсонации, не хватит привелегий. Даже у админа. Только у сервиса.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[5]: Автозапуск режима RunAs
От: Alex Fedotov США  
Дата: 17.03.05 08:28
Оценка:
Здравствуйте, Andrew S, Вы писали:

C>>>Если я не ошибаюсь, данный подход предполагает программное определение

C>>>вхождения пользователя в группу администраторы с последующим...

PD>>принятием решения, можно ли просто делать CreateProcess или же необходимо запросить логин/пароль и вызвать CreateProcessAsUser


AS>Не покатит.


AS>

AS>In Windows 2000, the process calling LogonUser requires the SE_TCB_NAME


AS>Поэтому и есть RunAs, который выполнен в виде сервиса. Насколько я понимаю, вопрошающего интересует именно апи к нему. Я этого не копал Но советую поискать в группо-гугле, наверняка там что то есть...


API называется CreateProcessWithLogonW

AS>PS

AS>Да, учтите, что более-менее адекватные пользователи нафиг вырубают этот сервис во избежание.

Я бы скорее назвал этих пользователей неадекватными. Вместо того, чтобы пользоваться runas, они с утра до вечера сидят администраторами на своих машинах.
-- Alex Fedotov
Запуск программ с вызовом диалога RunAs
От: Alex Fedotov США  
Дата: 17.03.05 08:35
Оценка: 16 (1)
#Имя: FAQ.winapi.shellexecute.runas
Здравствуйте, Contact, Вы писали:

C>Если я не ошибаюсь, данный подход предполагает программное определение

C>вхождения пользователя в группу администраторы с последующим... чем?
C>1) поменять владельца процесса нельзя (можно???)
C>=> необходимо как-то показать диалог ранэс (как?) и получить результаты ввода
C>2) если идти не по варианту (1), то в голову приходит только идея вызова
C>ранэс-диалога на самом себе

Что касается стандартного диалога Run As, то в XP в реестре есть такой ключик

HKEY_CLASSES_ROOT\exefile\shell\runas\command

Это мне подсказывает, что возможно нужного эффекта удастся добиться вот таким вот вызовом:

ShellExecute(NULL, "runas", "yourapp.exe", NULL, NULL, SW_SHOWNORMAL);

Проверку оставляю за Вами.
-- Alex Fedotov
Re[3]: Автозапуск режима RunAs
От: Contact Россия http://www.lact.ru
Дата: 18.03.05 15:54
Оценка:
Кстати, да, это еще один интересный вопрос -- как работает runas,
через имперсонацию или через чистый запуск от имени другого пользователя?
С уважением,
Павел Васёв
-------------
LineAct &mdash; автоматическое создание Вашего сайта под ключ: дизайн, хостинг, online cms, хранилище файлов &mdash; стоит всего 6000 р...
Re[4]: Автозапуск режима RunAs
От: Alex Fedotov США  
Дата: 18.03.05 16:10
Оценка:
Здравствуйте, Contact, Вы писали:

C>Кстати, да, это еще один интересный вопрос -- как работает runas,

C>через имперсонацию или через чистый запуск от имени другого пользователя?

RunAs работает по схеме LogonUser -> CreateProcessAsUser.

Если вы попытаетесь сделать LogonUser -> ImpersonateLoggedOnUser -> CreateProcess, то процесс запустится от имени пользователя, который создал ваш процесс, а не от имени того, которого вы имперсонируете. Дело в том, что CreateProcess наследует primary (process-level) token, в то время как ImpersonateLoggedOnUser устанавливает impersonation token.
-- Alex Fedotov
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.