![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
ne0n |
|
|||
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: 4 Всего: 11 |
Возможно ли запустить программу в "защищенной среде". т.е. допустим программа выполняет какието действия с реестром, надо запустить ее таким образом что бы она не смогла изменить реестр. и.т.п.
При этом должна сохраняться возможность работы с процессом - хотя бы чтение. З.Ы. Перехват функций не предлагать т.к. перехватывать все подряд не есть гуд! |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
ne0n, Есть такой вариант, запустить программу с правами гостя при помощи функции
CreateProcessAsUser(); Учетная запись гостя не позволяет редактировать реестр, кроме разве что маленького его сегмента и не может писать на системный диск. Хотя вообще это зависит от того как разграничены права указанной учетной записи. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
ne0n |
|
|||
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: 4 Всего: 11 |
А по подробней...
Блин нашел описание под С:
![]() |
|||
|
||||
ldr12 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 9.2.2007 Репутация: 1 Всего: 1 |
Товарищи, пользуйтесь MSDN
![]() http://msdn.microsoft.com/library/default....ocessasuser.asp Нашел описание на C++ - описание на Delphi найти еще проще, просто напиши название функции и сделай Ctrl+Left Click по ней ![]() Точного кода дать, увы, не могу, ибо на ноутбуке имею лишь одного юзера, себя любимого, но пояснить могу ![]()
Первый параметр - результат выполнения функции LogonUser(), которая создает на компьютере сессию с правами указанного пользователя. Подробнее о ней в http://msdn.microsoft.com/library/default....ocessasuser.asp там все интуитивно понятно - юзернейм, домен, пароль и пара флажков. Второй и третий параметры понятны, путь до приложения и аргументы командной строки. Третий и четвертый обычно являются NULL, если ты конечно не хочешь, чтобы из-под твоей админской учетной записи какая-то еще программа теоретически могла скопировать хендл твоего ограниченного процесса и работать с ним. Шестой - наследуем ли будет хендл твоего процесса, тоже можно поставить в False, если ничего страшного с ним делаться не будет. Седьмой - http://msdn2.microsoft.com/en-us/library/ms684863.aspx - всякие экзотические флаги, которые тебе вряд ли потребуются. Ставь 0, но на всякий случай погляди ссылку ![]() Восьмой - указатель на буфер с переменными окружения. Согласно MSDN, они находятся в формате имя=значение(нулевой символ)имя2=значение2(нулевой символ)... Если указать nil, то будут использоваться переменные окружения твоего процесса. Впрочем, ничего страшного не случится. Ведь, как правило, для всех юзеров переменные окружения одинаковы по умолчанию. Девятый - полезный параметр. Указывает, какая папка будет считаться для созданного процесса текущей, как ты сказал, для процесса будет все намертво заблокировано, поэтому эту папку, скорее всего, придется указать. Десятый - структура TStartupInfo. http://msdn.microsoft.com/library/default....ocessasuser.asp Много экзотических параметров, мало из которых, как правило, требуется. Тем не менее, перед вызовом CreateProcessAsUser не забудь сделать StartupInfo.cb := SizeOf(TStartupInfo); И, наконец, одиннадцатый - структура TProcessInformation, куда ты получишь PID своего процесса, его хендл с правами PROCESS_ALL_ACCESS и еще много чего интересного. Надеюсь, помог разобраться ![]() http://msdn.microsoft.com/library/default....ocessasuser.asp Вот хороший пример, демонстрирующий, сколько параметров можно в самом деле опустить ![]() |
|||
|
||||
ldr12 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 9.2.2007 Репутация: 1 Всего: 1 |
А вот и код:
Это сообщение отредактировал(а) ldr12 - 10.2.2007, 03:53 |
|||
|
||||
ne0n |
|
|||
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: 4 Всего: 11 |
ldr12, большое спасибо, т.е. эта фича сработает только в том случаи если на П.К. есть гостевая
учетная запись, я правильно понял? а что делать если на компе всего один пользователь?
Чето я не совсем понял ![]() Это сообщение отредактировал(а) ne0n - 10.2.2007, 10:34 |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
NET_API_STATUS NetUserAdd( LMSTR servername, DWORD level, LPBYTE buf, LPDWORD parm_err ); -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
ne0n |
|
|||
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: 4 Всего: 11 |
||||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Часть вторая - глава 5 - - Задания Качать здесь: http://snowy.delphist.com/books/#richter Там всё подробно описано. |
|||
|
||||
ne0n |
|
|||
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: 4 Всего: 11 |
Snowy, спасибо посмотрю.
|
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Snowy, я тоже сразу про задания подумал, но там нет нужных ограничений(доступ к реестру, фс), по-крайней я в своё время не нашёл.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
|
|||
|
||||
ne0n |
|
|||
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: 4 Всего: 11 |
Вроде похоже на то что надо, только в C я почти нуль, ладно буду разбираться.
|
|||
|
||||
ne0n |
|
||||||
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: 4 Всего: 11 |
Блин, че ж сразу не сказали, что Делфя об этих заданиях ничего не знает
![]() Ну вроде кое как перевел, пока возникло несколько заминок: 1 как с си перевести это:
И еще вопросик какая разница между:
и
Это сообщение отредактировал(а) ne0n - 12.2.2007, 18:24 |
||||||
|
|||||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
ne0n, срочно учить С
![]() В размерах типа данных. ничего не перепутал? Там "\" как будто бы лишний... -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |