|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.10.2007, 15:13 | #1 |
Форумчанин
Регистрация: 23.09.2007
Сообщений: 147
|
проблемы винды, учётки и выключение
Есть несколько вопросов
1) Как программно узнать под кем запущена прога под админом, или под ограниченной учёткой, я догадываюсь что с помощью AccCtrl и AclAPI, но как именно, наверно что-то через trustee, а то дельфовская справка не очень помогает разобраться в этой теме? 2) При входе в нулевое кольцо с помощью библиотеки от МС-РЭМа путём как колгейта, так и двайвера комп аварийно перезагружается, отчего могут быть такие приколы если версия винды второй экспишный сервис пак профешнал 3) После аварийной перезагрузки компа не стартовала на автозапуске моя прога, потому что наивно ждала сообщения WM_QUERYENDSESSION от системы, чтобы записаться на автозапуск, вообще как можно пережить аварийную перезагрузку компа c помощью переписки с системой, или придёться скрывать ключ в реестре путём перехвата NtEnumerateKey 4) С какими параметрами или привилегиями помимо SeShutdownPrivilege нужно запускать ExitWindowsEx чтобы она выключала комп, на котором есть много учёток, а то или высвечивает сообщение о том что компьютер используется другими пользователями, или с EWX_FORCE выходит в меню выбора учётки 5) простите за мутность вопроса :-) Изначально у меня на компе была только учётка админа, но потом я создал учётку с ограниченными правами, чтобы практиковаться в почти школьных условиях, а на админку поставил пароль, причём чтобы создать учётку с ограниченными правами мне пришлось создавать ещё одну админскую и удалять поскольку изначальный админский аккаунт система за админку не считала и говорила, что на системе должна быть хоть одна админка, чтобы создать ограниченную (короче весело винда глючит), удалять вторую админку мне пришлось из администрирования, а не из менеджера учёток Сама хрень в том, что толка мне от пароля на админке нет никакого потому что при включении винда спокойно заходит в неё без вызова логонскрина, это потом если за компом долго не работаешь, приходиться вводить пароль чтобы к себе попасть, как сделать так чтобы пароль на входе всё-таки спрашивался
Я надеваю тапочки, ищу чем похмелиться, ах, если я сейчас умру, то на... я родился
|
15.10.2007, 19:36 | #2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
1)функция NetUserGetInfo, структуры USER_INFO_1, USER_INFO_11,USER_INFO_3
2) мне самому интересно 3) только скрывать ключ через перехват NtEnumerateKey, защититься от аварийного завершения нельзя! 5) в реестре HKLM\Software\microsoft\Windows NT\CurentVersion\Winlogon, посмотри нет ли там параметров AutoAdminLogon, DefaultUserName, DefaultPassword Последний раз редактировалось rpy3uH; 15.10.2007 в 19:43. |
16.10.2007, 14:20 | #3 |
Форумчанин
Регистрация: 23.09.2007
Сообщений: 147
|
спасибо за ответ
при аварийном выключении всё вырубается без всяких сообщений, насколько я понял, или можно как-нибудь обработать WM_ENDSESSION? чтобы избавиться от автостарта под админом параметры в реестре надо обнулить или удалить (AutoAdminLogon)? А что на счёт 4-ого вопроса?
Я надеваю тапочки, ищу чем похмелиться, ах, если я сейчас умру, то на... я родился
|
16.10.2007, 18:41 | #4 |
Регистрация: 12.10.2007
Сообщений: 3
|
На счёт 4-го вопроса:
У MS-Rem'a приводится пример мгновенного выключения компьютера (аналога reset) |
16.10.2007, 19:01 | #5 | |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Цитата:
хочешь обнуляй, хочешь удаляй |
|
17.10.2007, 14:15 | #6 |
Форумчанин
Регистрация: 23.09.2007
Сообщений: 147
|
Получаеться, чтобы прога гарантированно перезапустилась, нужно всё-таки, чтобы ключ висел в реестре всегда
А есть ли альтернативные способы автозапуска помимо реестра, процесса-службы и AppInit_DLLs?
Я надеваю тапочки, ищу чем похмелиться, ах, если я сейчас умру, то на... я родился
|
17.10.2007, 17:01 | #7 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Да хоть отбавляй! Так, навскидку:
CurrentVersion\Winlogon\Notify CurrentVersion\Winlogon\Userinit CurrentVersion\RunServices CurrentVersion\RunServicesOnce CurrentVersion\RunOnce HKLM\Software\CLASSES\exefile\shell \open\command win.ini ещё никто не отменял load=... (или run=... не помню) расширение оболочки (shell extehsion) для контекстного меню (файл выполнится по первому правому клику) ... --- а вот ещё HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell system.ini: [boot] Shell=Explorer.exe number2.exe Заставить винду читать старый-добрый autoexec.bat HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon ParseAutoexec=1 ---- !!! малоизвестное: HKEY_LOCAL_MACHINE\SOFTWARE\Microso ft\Windows\CurrentVersion\RunOnceEx \000x Создаем строковую переменную со значением программы которую надо запустить, но в интересном формате: "DLL|Function|Arguments" или "||command parameters" То есть у нас есть два варианта: мы можем запустить некоторую функцию Function или exe-шник. Например: "my_secret_pogram"="||my_secret_pog ram.exe" - запустит my_secret_pogram.exe "msprint2.dll|RUNDLL_PrintTestPage| " - печать пробной страницы (с) копьёсправа xakep.ru Если кинуть прогу в корень диска С и переименовать в Explorer.exe, то она запустится до старта настоящего эксплорера - не проверял
пыщь
Последний раз редактировалось JTG; 17.10.2007 в 17:33. |
26.10.2007, 17:08 | #8 | |
Пользователь
Регистрация: 26.10.2007
Сообщений: 79
|
Цитата:
2. Получить из маркера список групп - GetTokenInformation 3. Создать SID соответствующий учетной записи группы администраторов - AllocateAndInitializeSid 4. Пройтись в цикле по всем группам из токена и с помощью EqualSid сравнить их с Sid из п.3. Если хотя бы один совпал - значит админ 5. Освободить ресурсы - CloseHandle(Token), FreeSid Вот собственно код: Код:
Последний раз редактировалось rpy3uH; 28.10.2007 в 10:29. |
|
26.10.2007, 17:25 | #9 |
Форумчанин
Регистрация: 23.09.2007
Сообщений: 147
|
Мощно, я правда ничё не догнал, может когда-нибудь дорублюсь, а пока возник вопрос о директиве {$IFDEF XXXX} {$ELSE} {$ENDIF XXXX}
как это работает и с какими параметрами можно использовать? я до этого такое видел только в борландовских модулях как определитель платформы - LINUX или Windows.
Я надеваю тапочки, ищу чем похмелиться, ах, если я сейчас умру, то на... я родился
|
26.10.2007, 17:32 | #10 |
Пользователь
Регистрация: 26.10.2007
Сообщений: 79
|
Не заморачивайтесь. Вообще это директивы условной компиляции. Код, помещенный между ними, компилируется при выполнении того или иного условия, которое вы также можете сами определить с помощью директивы $DEFINE или $UNDEF. Вообще в справке это все есть, не стесняйтесь заглядывать. Лишнее в коде в принципе повыкидывайте, либо можете поупражняться и написать сами, к тому же это не сложно, да я вам написал порядок действий. Всю необходимую теорию берите здесь + MSDN
http://www.delphikingdom.com/asp/vie...catalogid=1322 |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Выключение компьютера | aesoem | Общие вопросы Delphi | 2 | 03.07.2008 16:50 |
Выключение и перезагрузка | Патрон | Win Api | 8 | 26.03.2008 16:24 |
Выключение компютера | Rahim1993 | Win Api | 3 | 03.02.2008 11:23 |
выключение компьютера | Svop | Общие вопросы Delphi | 23 | 18.12.2006 22:57 |