| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > GetNativeSystemInfo |
| Автор: drkot 9.8.2014, 22:52 | ||||
При вызове под пользователем:
При вызове под System:
Кому верить? И почему так? |
| Автор: Keeper89 30.8.2014, 15:07 |
| Код в студию. |
| Автор: drkot 11.9.2014, 12:10 | ||
| Насчет функции кто-то ошибся... На самом деле ее зовут "GetVersionEx"
в остальном как описано |
| Автор: Keeper89 11.9.2014, 23:58 |
| drkot, накидай тестовый проект в консоли - не понятно, как эта строка сформировалась. |
| Автор: drkot 12.9.2014, 11:55 |
| Формирование строки не суть важно. Оно идет на основе анализа OSVersionInfoEx, опираясь на константы из MSDN. Все тривиально. Суть в том, что при вызове GetVersionEx под локальным пользователем и под системой (сервис) возвращаются разные данные. Строки приведены для наглядности различий. Получается что опираться на данную функцию (для определения версии системы) нельзя, так она не выдает детерминированные результат. Например идет инсталляция сервиса, проверяется версия ОС, все допустим она устраивает. Запускаем сервис, проверяем версию ОС и выясняется что это не R2. Сервис прерывает запуск, так как используются специфичные функции. Тоже касается и билда системы. Собственно: |
| Автор: Keeper89 12.9.2014, 20:58 | ||
drkot, зависит от констант, которые используются. В частности, в http://msdn.microsoft.com/en-us/library/windows/desktop/ms724833%28v=vs.85%29.aspx для VER_NT_SERVER есть такое интересное замечание, как:
Из-за чего можно получить неверный результат, если используешь эту константу. |
| Автор: drkot 13.9.2014, 15:25 |
во первых это возвращаемое значение, следовательно оно не влияет на выдачу результата. Во вторых оно никак не связано с билдом и старшими номерами версии и с наличием сервис паков. в которых собственно и наблюдается различие. Windows Server 2012 R2 6.3* Windows Server 2012 6.2 Если это данные из реестра, то понятно, что они могут быть разными в пользовательских ветках. Хотя это и не хорошо. Получается что достоверно идентифицировать системы не получается... |