Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GetNativeSystemInfo, выдает разные данные но одной системе 
:(
    Опции темы
drkot
Дата 9.8.2014, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



При вызове под пользователем:
Код

Microsoft Windows Server 2008 Standard Edition, 64-bit (build 6000)

При вызове под System:
Код

Microsoft Windows Server 2008 R2 Standard Edition, 64-bit Service Pack 1 (build 7601)


Кому верить? И почему так?

Это сообщение отредактировал(а) drkot - 11.9.2014, 12:13


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Keeper89
Дата 30.8.2014, 15:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 14
Всего: 58



Код в студию.


--------------------
PM MAIL WWW   Вверх
drkot
Дата 11.9.2014, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Насчет функции кто-то ошибся...
На самом деле ее зовут "GetVersionEx"
Код

var
  OSVersionInfoEx: TOSVersionInfoEx;
begin
  ZeroMemory(@OSVersionInfoEx, sizeof(TOSVersionInfoEx));
  OSVersionInfoEx.dwOSVersionInfoSize:= sizeof(TOSVersionInfoEx);
  GetVersionEx(OSVersionInfoEx);


в остальном как описано


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Keeper89
Дата 11.9.2014, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 14
Всего: 58



drkot, накидай тестовый проект в консоли - не понятно, как эта строка сформировалась.


--------------------
PM MAIL WWW   Вверх
drkot
Дата 12.9.2014, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Формирование строки не суть важно. Оно идет на основе анализа OSVersionInfoEx, опираясь на константы из MSDN. Все тривиально.

Суть в том, что при вызове GetVersionEx под локальным пользователем и под системой (сервис) возвращаются разные данные.

Строки приведены для наглядности различий.

Получается что опираться на данную функцию (для определения версии системы) нельзя, так она не выдает детерминированные результат.

Например идет инсталляция сервиса, проверяется версия ОС, все допустим она устраивает. Запускаем сервис, проверяем версию ОС и выясняется что это не R2. Сервис прерывает запуск, так как используются специфичные функции. 
Тоже касается и билда системы.

Собственно:
Цитата(drkot @  9.8.2014,  23:52 Найти цитируемый пост)
Кому верить? И почему так?




--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Keeper89
Дата 12.9.2014, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 14
Всего: 58



drkot, зависит от констант, которые используются. В частности, в MSDN для VER_NT_SERVER есть такое интересное замечание, как:
Цитата

Note that a server that is also a domain controller is reported as VER_NT_DOMAIN_CONTROLLER, not VER_NT_SERVER.

Из-за чего можно получить неверный результат, если используешь эту константу.

Это сообщение отредактировал(а) Keeper89 - 12.9.2014, 20:58


--------------------
PM MAIL WWW   Вверх
drkot
Дата 13.9.2014, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Цитата(Keeper89 @  12.9.2014,  21:58 Найти цитируемый пост)
VER_NT_SERVER

во первых это возвращаемое значение, следовательно оно не влияет на выдачу результата.
Во вторых оно никак не связано с билдом и старшими номерами версии и с наличием сервис паков. в которых собственно и наблюдается различие.

Windows Server 2012 R2    6.3*
Windows Server 2012    6.2

Если это данные из реестра, то понятно, что они могут быть разными в пользовательских ветках. Хотя это и не хорошо.
Получается что достоверно идентифицировать системы не получается...


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0612 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.