Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо