Конференция "WinAPI" » BIOS, ZwOpenSection и Vista [D3, WinXP]
 
  • TAG (15.04.09 11:13) [0]
    Добрый день.

    Для определения конфига компьютера я читаю BIOS (SMBIOS) с помощью GetProcAddress(NtLayer, 'ZwOpenSection'); (текст как-то пробегал на этом форуме).

    Проблема в том, что под Vista и выше получаю  STATUS_ACCESS_DENIED.

    А очень хотелось бы таки прочесть :)
    Помогите, пожалуйста ( checkcfg (Зобака) narod.ru )
  • Palladin © (15.04.09 11:45) [1]
    1. Не Зобака, а AT. )
    2. http://www.delphimaster.ru/forums.shtml#rule Рекомендуется: п.11
    3. Хочется - запускай под Администраторской учетной записью. Попробуй по крайней мере, подозрение на недостаточность прав учетной записи. И почитай, что это значит в MSDN.
  • TAG (15.04.09 11:59) [2]
    Palladin :

    про п.11 - не понял, при чем тут мой пост ???

    про права и MSDN - права Админские. Что значит сообщение - понятно.
    Не понятно ЧЕМ вызвано и как обойти (если можно).

    Более того, если читать БИОС с помощью 16-битного приложения - выводить кусок БИОСА через INT21 DosCall(0x40) -  DOS_WRITE_TO_HANDLE где HANDLE=STDOUT то на однотипных машинах под Win2003 выводится кусок, а под Win2000 - весь запрашиваемый фрагмент E000:0000-E000:FFFE
  • Игорь Шевченко © (15.04.09 13:17) [3]

    > Проблема в том, что под Vista и выше получаю  STATUS_ACCESS_DENIED.


    что, при GetProcAddress ?
  • 12 © (15.04.09 14:13) [4]
    А выше Vista это какая?
  • TAG (15.04.09 14:24) [5]
    Выше 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")
  • Игорь Шевченко © (15.04.09 14:36) [6]

    > получаю STATUS_ACCESS_DENIED


    Ну да. Закрыли эту дырку наконец.

    "access to this object is denied starting in Windows 2003 Service Pack 1 and Windows Vista. "
  • TAG (15.04.09 14:44) [7]
    П.С. это - не "аналог.кусок" - это то, на основании чего я и замутил чтение SMBIOSа.

    В вышепр.куске читается память F000:0000-F000:FFFF, в ней лежит заголовок SMBIOSа, он разбирается моей прогой и при необходимости дочитывается кусок с данными о железе компа.

    Например, Compaq ML350 - Заголовок в F000 сегменте, а данные - в E000 сегменте, с адреса C000

    Попытка читать через NTLayer выдает ошибку, тогда файлом, сделанным по чудо-методе _RomDumpCode (см.ссылку) читаем сегменты E000 и F000 под Win2000 и Win2003.

    итог :
    под 2003 до адреса E000:E000 считываются только нули, далее считанные данные до F000:FFFE совпадают.

    т.о. получаем - и так не прочесть и так - лажа получается... а програмка нужная, популярная, хочется довести :)

    Андрей.
  • Alex Konshin © (20.04.09 03:45) [8]
    У меня нет Vista (и видимо не будет), но думаю, что всё станет ясно, если посмотреть на права объекта через WinObj Руссиновича.
  • TAG (22.04.09 16:41) [9]
    2 Alex Konshin : Не пойму - на какой объект, извините ?
  • TAG (22.04.09 16:44) [10]
    если PhisicalMemory - то Admins - QueryData & QueryState разрешены
 
Конференция "WinAPI" » BIOS, ZwOpenSection и Vista [D3, WinXP]
Есть новые Нет новых   [134435   +38][b:0][p:0]