![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
BIOS, ZwOpenSection и Vista [D3, WinXP]
TAG © (2009-04-15 11:13:00)Добрый день.
Для определения конфига компьютера я читаю BIOS (SMBIOS) с помощью GetProcAddress(NtLayer, 'ZwOpenSection');(текст как-то пробегал на этом форуме).
Проблема в том, что под Vista и выше получаю STATUS_ACCESS_DENIED.
А очень хотелось бы таки прочесть :)
Помогите, пожалуйста ( checkcfg (Зобака) narod.ru )
TAG (2009-04-22 16:44:00) [1]если PhisicalMemory - то Admins - QueryData & QueryState разрешены
TAG (2009-04-22 16:41:00) [2]2 Alex Konshin: Не пойму - на какой объект, извините ?
Alex Konshin (2009-04-20 03:45:00) [3]У меня нет Vista (и видимо не будет), но думаю, что всё станет ясно, если посмотреть на права объекта через WinObj Руссиновича.
TAG (2009-04-15 14:44:00) [4]П.С. это - не "аналог.кусок" - это то, на основании чего я и замутил чтение SMBIOSа.
В вышепр.куске читается память F000:0000-F000:FFFF, в ней лежит заголовок SMBIOSа, он разбирается моей прогой и при необходимости дочитывается кусок с данными о железе компа.
Например, Compaq ML350 - Заголовок в F000 сегменте, а данные - в E000 сегменте, с адреса C000
Попытка читать через NTLayer выдает ошибку, тогда файлом, сделанным по чудо-методе _RomDumpCode (см.ссылку) читаем сегменты E000 и F000 под Win2000 и Win2003.
итог :
под 2003 до адреса E000:E000 считываются только нули, далее считанные данные до F000:FFFE совпадают.
т.о. получаем - и так не прочесть и так - лажа получается... а програмка нужная, популярная, хочется довести :)
Андрей.
Игорь Шевченко (2009-04-15 14:36:00) [5]
> получаю STATUS_ACCESS_DENIED
Ну да. Закрыли эту дырку наконец.
"access to this object is denied starting in Windows 2003 Service Pack 1 and Windows Vista. "
TAG (2009-04-15 14:24:00) [6]Выше WinXP - Vista,2003, ( 2008 и 7ка наверно тоже )
Шевченко :
GetProcAddress(NtLayer, 'ZwOpenSection')
GetProcAddress(NtLayer, 'RtlNtStatusToDosError')
- все Ок
Status := ZwOpenSection(Section, SECTION_MAP_READ,
@ObjectPhysicalMemoryAttributes);
получаю STATUS_ACCESS_DENIED
вот аналог.кусок кода http://book.77169.org/ask24/how163755.htm
(поиск на странице текста "@ObjectPhysicalMemoryAttributes")
12 (2009-04-15 14:13:00) [7]А выше Vista это какая?
Игорь Шевченко (2009-04-15 13:17:00) [8]
> Проблема в том, что под Vista и выше получаю STATUS_ACCESS_DENIED.
что, при GetProcAddress ?
TAG (2009-04-15 11:59:00) [9]Palladin :
про п.11 - не понял, при чем тут мой пост ???
про права и MSDN - права Админские. Что значит сообщение - понятно.
Не понятно ЧЕМ вызвано и как обойти (если можно).
Более того, если читать БИОС с помощью 16-битного приложения - выводить кусок БИОСА через INT21 DosCall(0x40) - DOS_WRITE_TO_HANDLE где HANDLE=STDOUT то на однотипных машинах под Win2003 выводится кусок, а под Win2000 - весь запрашиваемый фрагмент E000:0000-E000:FFFE
Palladin (2009-04-15 11:45:00) [10]1. Не Зобака, а AT. )
2. http://www.delphimaster.ru/forums.shtml#ruleРекомендуется: п.11
3. Хочется - запускай под Администраторской учетной записью. Попробуй по крайней мере, подозрение на недостаточность прав учетной записи. И почитай, что это значит в MSDN.