Знаете ли вы, что...
От: qwertyuiop Российская Империя  
Дата: 13.05.15 10:20
Оценка: 3 (1) :))) :)))
Функцию GetVersionEx собираются отменить и теперь получить версию системы можно будет таким изящным кодом:
    if (IsWindowsXPOrGreater())
    {
        printf("XPOrGreater\n");
    }

    if (IsWindowsXPSP1OrGreater())
    {
        printf("XPSP1OrGreater\n");
    }

    if (IsWindowsXPSP2OrGreater())
    {
        printf("XPSP2OrGreater\n");
    }

    if (IsWindowsXPSP3OrGreater())
    {
        printf("XPSP3OrGreater\n");
    }

    if (IsWindowsVistaOrGreater())
    {
        printf("VistaOrGreater\n");
    }

    if (IsWindowsVistaSP1OrGreater())
    {
        printf("VistaSP1OrGreater\n");
    }

    if (IsWindowsVistaSP2OrGreater())
    {
        printf("VistaSP2OrGreater\n");
    }

    if (IsWindows7OrGreater())
    {
        printf("Windows7OrGreater\n");
    }

    if (IsWindows7SP1OrGreater())
    {
        printf("Windows7SP1OrGreater\n");
    }

    if (IsWindows8OrGreater())
    {
        printf("Windows8OrGreater\n");
    }

    if (IsWindows8Point1OrGreater())
    {
        printf("Windows8Point1OrGreater\n");
    }

    if (IsWindows10OrGreater())
    {
        printf("Windows10OrGreater\n");
    }

    if (IsWindowsServer())
    {
        printf("Server\n");
    }
    else
    {
        printf("Client\n");
    }


Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re: Знаете ли вы, что...
От: lxa http://aliakseis.livejournal.com
Дата: 13.05.15 11:21
Оценка: 2 (2) :))
Microsoft такой Microsoft ...

Насколько я помню, функция GetVersion есть в API всех версий Windows:

DWORD GetVersion();

С этой простой функцией связана целая история. Сначала ее разработали для 16-разрядной Windows, и она должна была в старшем слове возвращать номер версии MS-DOS, а в младшем — номер версии Windows. Соответственно в каждом слове старший байт сообщал основной номер версии, младший — дополнительный номер версии.
Увы, программист, писавший ее код, слегка ошибся, и получилось так, что номера версии Windows поменялись местами: в старший байт попадал дополнительный номер, а в младший — основной. Поскольку многие программисты уже начали пользоваться этой функцией, Майкрософт пришлось оставить все, как есть, и изменить документацию с учетом ошибки.
Из-за всей этой неразберихи вокруг GetVersion в Windows API включили новую функцию — GetVersionEx:

BOOL GetVersionEx(POSVERSIONINFOEX pVersionInformation);

Re: Знаете ли вы, что...
От: tlp  
Дата: 13.05.15 16:50
Оценка: 9 (5) +6 :))) :)))
Здравствуйте, qwertyuiop, Вы писали:

Q>Функцию GetVersionEx собираются отменить и теперь получить версию системы можно будет таким изящным кодом:

Типичный пример эффекта Даннинга-Крюгера: некомпетентные люди делают некомпетентные выводы о том, в чем не разбираются и думают, что тонко пошутили. Понять факт того, что они сказали глупость, им мешает отсутствие нужных знаний.

Будем бороться.

Указаные вами функции существуют с момента появления windows 2000 и доступны всем желающим.
Что интересно, скомпилированная программа, использующая функциию "IsWindows8OrGreater" (а также все функции, которые будут добавлены позднее) будет работать на windows 2000 (и на ней эта функция вернет false).
домашнее задание — разобраться, как именно это получается (и нет, это не делается каким-то патчем в старые windows 2000)

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

Новые функции придумали не просто так.
Причина их появления в том, что типичные Раджикумары, пищущие код проверки версии виндовса, не в состоянии написать правилньый код, проверящюий что версия виндовс — какая-то версия, после версии X.Y

Т.е. наши друзья пишут обычно:

OSVERSIONINFO vi;

GetVersionEx(&vi);

if (vi.dwMajorVersion > 5 && osvi.dwMinorVersion >= 1)
{
   // it is XP or later 
}
else
{
   // this OS is not suported
}


кода с такими ошибками очень много, и чтобы поправить что-то в консерватории, МС добавила более простой API.
Отредактировано 13.05.2015 17:08 tlp . Предыдущая версия .
Re[2]: Знаете ли вы, что...
От: Философ Ад http://vk.com/id10256428
Дата: 13.05.15 17:20
Оценка: +2
Здравствуйте, tlp, Вы писали:

tlp>
tlp>else
tlp>{
tlp>   // this OS is not suported
tlp>}
tlp>


ПРЕКРАСНО!
Так и надо.

tlp>кода с такими ошибками очень много, и чтобы поправить что-то в консерватории, МС добавила более простой API.


Зря они это сделали: лучше оно просто работать не будет, чем будет считать мне погоду в Африке или испортит данные.
Если они так тупо косячат здесь, то дальше и глубже будет только хуже — существуют куда более сложные API и более сложные проверки условий.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[3]: Знаете ли вы, что...
От: tlp  
Дата: 13.05.15 17:36
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>Зря они это сделали: лучше оно просто работать не будет, чем будет считать мне погоду в Африке или испортит данные.

Если посмотреть на ситуацию в целом, МС сделала абсолютно правильный шег: она убрала себе головную боль и уменьша support & migration costs

Ф>Если они так тупо косячат здесь, то дальше и глубже будет только хуже — существуют куда более сложные API и более сложные проверки условий.

До более сложных API Раджикумаров не допускают, а это — относительно простой API, который часто используется неправильно, увеличивая стоимость поддержки кода при выходе новой версии windows (кто-то должен отвечать на вопросы, писать патчи/воркэраунды для инсталляторов).
Re[2]: Знаете ли вы, что...
От: zubactik  
Дата: 13.05.15 17:36
Оценка: +1 :))) :))
Поясните, пожалуйста, (для еще более некомпетентных) в этом фрагменте
if (vi.dwMajorVersion > 5 && os vi.dwMinorVersion >= 1)
{
    // it is XP or later 
}
else
{
    // this OS is not suported
}


ошибка именно в куске
else
{
    // this OS is not suported
}

?

Или что-то не так и с
if (vi.dwMajorVersion > 5 && os vi.dwMinorVersion >= 1)
{
    // it is XP or later 
}

?
Re[3]: Знаете ли вы, что...
От: tlp  
Дата: 13.05.15 17:38
Оценка:
Здравствуйте, zubactik, Вы писали:

Z>Поясните, пожалуйста, (для еще более некомпетентных) в этом фрагменте


второе

PS osvi — опечатка, но правиль исходное сообщение не буду, т.к. на него уже ответили.
Re[3]: Знаете ли вы, что...
От: Философ Ад http://vk.com/id10256428
Дата: 13.05.15 17:56
Оценка: +1
Здравствуйте, zubactik, Вы писали:

Z>Поясните, пожалуйста, (для еще более некомпетентных) в этом фрагменте


Z>Или что-то не так и с

Z>
Z>if (vi.dwMajorVersion > 5 && os vi.dwMinorVersion >= 1)
Z>{
Z>    // it is XP or later 
Z>}
Z>

Z>?


А ты запусти этот код на Windows Vista, или просто представь, что он выдаст — объяснение не потребуется. Это главная ошибка в этом коде.
Можешь попробовать на любой другой, где нулевая минорная версия.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[4]: Знаете ли вы, что...
От: zubactik  
Дата: 13.05.15 18:08
Оценка:
Да нет, дальше понятно. Просто неясно сколько именно здесь было ошибок.
Re[5]: Знаете ли вы, что...
От: tlp  
Дата: 13.05.15 18:11
Оценка:
Здравствуйте, zubactik, Вы писали:

Z>Да нет, дальше понятно. Просто неясно сколько именно здесь было ошибок.

вы не спрашивали, сколько здесь ошибок, вы спришвали, где ошибка — т.е. подразумевали, что она одна).
На самом деле ошибок в этом коде больше, но остальные не такие существенные.
Re[2]: Знаете ли вы, что...
От: AlexRK  
Дата: 13.05.15 18:18
Оценка:
Здравствуйте, tlp, Вы писали:

tlp>Новые функции придумали не просто так.

tlp>Причина их появления в том, что типичные Раджикумары, пищущие код проверки версии виндовса, не в состоянии написать правилньый код, проверящюий что версия виндовс — какая-то версия, после версии X.Y
tlp>Т.е. наши друзья пишут обычно:
tlp>кода с такими ошибками очень много, и чтобы поправить что-то в консерватории, МС добавила более простой API.

Какая трогательная забота о Раджикумарах.
А что, функции для получения версии самая сложная часть API? Ошибок в других местах Раджикумары не делают или там уже все настолько просто, насколько это возможно (но не проще)?
Re[6]: Знаете ли вы, что...
От: zubactik  
Дата: 13.05.15 18:18
Оценка:
Да, я сначала подумал на второй сегмент, а ваш ответ дал толчок подумать над тем что не так в первом.
Re[3]: Знаете ли вы, что...
От: tlp  
Дата: 13.05.15 18:24
Оценка:
Здравствуйте, AlexRK, Вы писали:

ARK>Какая трогательная забота о Раджикумарах.

Это снижение расходов на миграцию между версиями windows, в чем МС очень заинтересован. Забота о Раджикумарах получается в виде бесплатного дополнения.

ARK>А что, функции для получения версии самая сложная часть API? Ошибок в других местах Раджикумары не делают или там уже все настолько просто, насколько это возможно (но не проще)?

Эта функия — простая часть API и Раджикумары ее часто используют неправильно, получая проблемы на пустом месте при выходе новой версии ОС.
Ошибки в других местах они, несомненно, делают, но не везде можно легко улучшить юзабилити API, сэкономив таким образом время и деньги в долгосрочной перспективе.
Re[7]: Знаете ли вы, что...
От: tlp  
Дата: 13.05.15 18:25
Оценка:
Здравствуйте, zubactik, Вы писали:

Z>Да, я сначала подумал на второй сегмент, а ваш ответ дал толчок подумать над тем что не так в первом.

там есть и другие ошибки Раджикумары — мастера этого дела.
Re[2]: Знаете ли вы, что...
От: The Passenger Голландия  
Дата: 13.05.15 20:48
Оценка: :))) :)
Здравствуйте, tlp, Вы писали:


tlp>Т.е. наши друзья пишут обычно:


конгениально — совместимость с индусами — новый мэйнстрим программирования
хотя и не первый пример
Весь мир — Кремль, а люди в нем — агенты
Re[2]: Знаете ли вы, что...
От: . Великобритания  
Дата: 13.05.15 21:22
Оценка:
Здравствуйте, tlp, Вы писали:

tlp> if (vi.dwMajorVersion > 5 && osvi.dwMinorVersion >= 1)


tlp> кода с такими ошибками очень много, и чтобы поправить что-то в консерватории, МС добавила более простой API.

Ерунда какая-то. А почему нельзя просто
if(IsWindowsVersionIsOrGreater(5, 1))
{
}

?
И вообще... версирование по major/minor нужно если хочешь проверять только некоторые минорные версии мажорных. Т.е.
if (vi.dwMajorVersion == 5 && vi.dwMinorVersion >= 2
  || vi.dwMajorVersion == 6 && vi.dwMinorVersion >= 3
  || vi.dwMajorVersion vi.dwMajorVersion >= 6)

Иначе говоря, хотим какую-то новую функциональность, которую сделали в версии начиная с седьмой, и её же забэкпортили в пятую с сервис-пака 2 и в шестую с сервис пака 3.

Иначе вообще проще использовать одно число, "5.1" == 501 и пачку #define WINDOWS_XP_SP2 501 и т.п.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[3]: Знаете ли вы, что...
От: tlp  
Дата: 13.05.15 21:27
Оценка:
Здравствуйте, The Passenger, Вы писали:


TP>конгениально — совместимость с индусами — новый мэйнстрим программирования

FTFY
Re[3]: Знаете ли вы, что...
От: tlp  
Дата: 13.05.15 21:29
Оценка:
Здравствуйте, ., Вы писали:

.>Здравствуйте, tlp, Вы писали:


tlp>> if (vi.dwMajorVersion > 5 && osvi.dwMinorVersion >= 1)


tlp>> кода с такими ошибками очень много, и чтобы поправить что-то в консерватории, МС добавила более простой API.

.>Ерунда какая-то. А почему нельзя просто
.>
.>if(IsWindowsVersionIsOrGreater(5, 1))
.>{
.>}
.>

.>?

можно (IsWindowsVersionOrGreater https://msdn.microsoft.com/en-us/library/windows/desktop/dn424964(v=vs.85).aspx), но лучше явное имя ОС, т.к. большинство проверок выглядят именно как "наша програама требует windows 7 и выше".

.>И вообще... версирование по major/minor нужно если хочешь проверять только некоторые минорные версии мажорных. Т.е.

.>Иначе говоря, хотим какую-то новую функциональность, которую сделали в версии начиная с седьмой, и её же забэкпортили в пятую с сервис-пака 2 и в шестую с сервис пака 3.

.>Иначе вообще проще использовать одно число, "5.1" == 501 и пачку #define WINDOWS_XP_SP2 501 и т.п.


Теоретики в треде! %)
Отредактировано 13.05.2015 22:08 tlp . Предыдущая версия .
Re[4]: Знаете ли вы, что...
От: . Великобритания  
Дата: 13.05.15 21:36
Оценка:
Здравствуйте, tlp, Вы писали:

tlp> можно, но лучше явное имя ОС, т.к. большинство проверок выглядят именно как "наша програама требует windows 7 и выше".

Так чем тогда простой enum и одна функция не устраивает?

tlp> .>Иначе вообще проще использовать одно число, "5.1" == 501 и пачку #define WINDOWS_XP_SP2 501 и т.п.

tlp> Теоретики в треде! %)
Так страшно на такое извращение смотреть. Как теперь такое развидеть?
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[5]: Знаете ли вы, что...
От: tlp  
Дата: 13.05.15 22:04
Оценка:
Здравствуйте, ., Вы писали:

.>Здравствуйте, tlp, Вы писали:


tlp>> можно, но лучше явное имя ОС, т.к. большинство проверок выглядят именно как "наша програама требует windows 7 и выше".

.>Так чем тогда простой enum и одна функция не устраивает?
Например тем, что 20 лет назад, когда придумывали существующую нумерацию версий, об этом не подумали.

tlp>> .>Иначе вообще проще использовать одно число, "5.1" == 501 и пачку #define WINDOWS_XP_SP2 501 и т.п.

tlp>> Теоретики в треде! %)
.>Так страшно на такое извращение смотреть. Как теперь такое развидеть?
Перестать программировать и пойти пасти коз например
Re[3]: Знаете ли вы, что...
От: tlp  
Дата: 13.05.15 22:07
Оценка:
Здравствуйте, ., Вы писали:

.>Здравствуйте, tlp, Вы писали:


tlp>> if (vi.dwMajorVersion > 5 && osvi.dwMinorVersion >= 1)


tlp>> кода с такими ошибками очень много, и чтобы поправить что-то в консерватории, МС добавила более простой API.

.>Ерунда какая-то. А почему нельзя просто
.>
.>if(IsWindowsVersionIsOrGreater(5, 1))
.>{
.>}
.>

.>?

забыл добавить в оригинальном ответе:
можно https://msdn.microsoft.com/en-us/library/windows/desktop/dn424964(v=vs.85).aspx
Отредактировано 13.05.2015 22:08 tlp . Предыдущая версия .
Re[6]: Знаете ли вы, что...
От: . Великобритания  
Дата: 13.05.15 22:11
Оценка:
Здравствуйте, tlp, Вы писали:

tlp> .>Так чем тогда простой enum и одна функция не устраивает?

tlp> Например тем, что 20 лет назад, когда придумывали существующую нумерацию версий, об этом не подумали.
Ну допустим, но сейчас зачем этот зоопарк функций вводить?
Почему нельзя вменяемую обёртку написать?

tlp> .>Так страшно на такое извращение смотреть. Как теперь такое развидеть?


tlp> Перестать программировать и пойти пасти коз например

Так опыта не хватит, в CV не будет нужных ключевых слов.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[7]: Знаете ли вы, что...
От: tlp  
Дата: 13.05.15 22:15
Оценка:
Здравствуйте, ., Вы писали:

.>Здравствуйте, tlp, Вы писали:


tlp>> .>Так чем тогда простой enum и одна функция не устраивает?

tlp>> Например тем, что 20 лет назад, когда придумывали существующую нумерацию версий, об этом не подумали.
.>Ну допустим, но сейчас зачем этот зоопарк функций вводить?
.>Почему нельзя вменяемую обёртку написать?
зоопарк фукнций гораздо удобнее. Для тех, кому нужны очень специальные проверки есть функция IsWindwosVersionOrGreater https://msdn.microsoft.com/en-us/library/windows/desktop/dn424964(v=vs.85).aspx

tlp>> .>Так страшно на такое извращение смотреть. Как теперь такое развидеть?

tlp>> Перестать программировать и пойти пасти коз например
.>Так опыта не хватит, в CV не будет нужных ключевых слов.
Почему?
Re[2]: Знаете ли вы, что...
От: qwertyuiop Российская Империя  
Дата: 14.05.15 04:48
Оценка:
Здравствуйте, tlp, Вы писали:

Q>>Функцию GetVersionEx собираются отменить и теперь получить версию системы можно будет таким изящным кодом:

tlp>Типичный пример эффекта Даннинга-Крюгера: некомпетентные люди делают некомпетентные выводы о том, в чем не разбираются и думают, что тонко пошутили. Понять факт того, что они сказали глупость, им мешает отсутствие нужных знаний.

tlp>Указаные вами функции существуют с момента появления windows 2000 и доступны всем желающим.

tlp>Что интересно, скомпилированная программа, использующая функциию "IsWindows8OrGreater" (а также все функции, которые будут добавлены позднее) будет работать на windows 2000 (и на ней эта функция вернет false).

Спасибо, кэп. Только я и не утверждал, что они новые. Я лишь написал, что GetVersionEx собираются отменить, о чем написано в msdn:

[GetVersionEx may be altered or unavailable for releases after Windows 8.1. Instead, use the Version Helper APIs]

А Version Helper APIs — это и есть те функции, которые существуют с Windows 2000. Только беда в том, что не всегда требуется узнать больше версия определенной или меньше, иногда требуется узнать конкретную версию или просто вывести в About ее номер. И тогда определить ее можно будет лишь последовательно вызывая те замечательные функции, о чем также сообщается в msdn. Вы, конечно, можете считать, что такой способ более удобный. Но мне кажется, что этому коду место в [КУ].
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[3]: Знаете ли вы, что...
От: pagid Россия  
Дата: 14.05.15 09:02
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

Q>Спасибо, кэп. Только я и не утверждал, что они новые. Я лишь написал, что GetVersionEx собираются отменить

Прямо так и исключат из API чтобы много-много программ перестало работать, и много таких прецедентов было? Или всё же объявят устаревшей.
Re[4]: Знаете ли вы, что...
От: qwertyuiop Российская Империя  
Дата: 14.05.15 09:25
Оценка:
Здравствуйте, pagid, Вы писали:

Q>>Я лишь написал, что GetVersionEx собираются отменить

P>Прямо так и исключат из API чтобы много-много программ перестало работать, и много таких прецедентов было? Или всё же объявят устаревшей.

Это ты у меня спрашиваешь? Мопед не мой, я лишь привел ссылку на MSDN.
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[8]: Знаете ли вы, что...
От: qwertyuiop Российская Империя  
Дата: 14.05.15 12:51
Оценка:
Здравствуйте, tlp, Вы писали:

.>>Ну допустим, но сейчас зачем этот зоопарк функций вводить?

.>>Почему нельзя вменяемую обёртку написать?
tlp>зоопарк фукнций гораздо удобнее. Для тех, кому нужны очень специальные проверки есть функция IsWindwosVersionOrGreater

Надо же, оказывается охранители есть не только в политике, но и у майкрософта.

А как быть тем, кто хочет просто вывести версию в About?
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[9]: Знаете ли вы, что...
От: tlp  
Дата: 14.05.15 16:55
Оценка: 6 (2)
Здравствуйте, qwertyuiop, Вы писали:

Q>Надо же, оказывается охранители есть не только в политике, но и у майкрософта.

я просто не люблю проявления эффекта Даннига-Крюгера на программерских форумах.

Q>А как быть тем, кто хочет просто вывести версию в About?

Зачем в About своей программы выводить версию ОС? Впрочем, Раджикумаров нам никогда не понять.
Вы вообще в курсе про AppCompat (https://msdn.microsoft.com/en-us/library/bb757005.aspx) и про то, что в зависимости от того, как программа запускается, ей может возвращаться разная информация о версии Windows?

Но если уж очень хочется написать в About красивое "Version 6.1.7601 Service Pack 1 Build 7601" то, читайте доки и делайте, как в них рекомендуют:

To obtain the full version number for the operating system, call the GetFileVersionInfo function on one of the system DLLs, such as Kernel32.dll, then call VerQueryValue to obtain the \\StringFileInfo\\<lang><codepage>\\ProductVersion subblock of the file version information.

Re[5]: Знаете ли вы, что...
От: tlp  
Дата: 14.05.15 17:00
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

Q>Здравствуйте, pagid, Вы писали:


Q>>>Я лишь написал, что GetVersionEx собираются отменить

P>>Прямо так и исключат из API чтобы много-много программ перестало работать, и много таких прецедентов было? Или всё же объявят устаревшей.

Q>Это ты у меня спрашиваешь? Мопед не мой, я лишь привел ссылку на MSDN.

В которой нет ни слова о том, что функцию собираются отменить. Учимся читать то, что написано, а не то, что придумали у себя в голове.
Re[6]: Знаете ли вы, что...
От: qwertyuiop Российская Империя  
Дата: 14.05.15 17:17
Оценка:
Здравствуйте, tlp, Вы писали:

Q>>Это ты у меня спрашиваешь? Мопед не мой, я лишь привел ссылку на MSDN.

tlp>В которой нет ни слова о том, что функцию собираются отменить. Учимся читать то, что написано, а не то, что придумали у себя в голове.

Приведи правильный перевод выражения "may be altered or unavailable". Ну да, ее не отменят, но она будет unavailable. Я безумно рад.
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[10]: Знаете ли вы, что...
От: qwertyuiop Российская Империя  
Дата: 14.05.15 17:23
Оценка: +2 :))
Здравствуйте, tlp, Вы писали:

Q>>А как быть тем, кто хочет просто вывести версию в About?

tlp>Зачем в About своей программы выводить версию ОС?

Знакомая песня. Когда фанатичных защитников чего-либо (не важно чего — Линукса, Виндовса, Андроида, IOS) спрашиваешь как там сделать <то-то> и они сливаются, то сразу же заявляют: а зачем тебе это? Я сколько работаю, мне никогда не понадобилось. Ясен пень не понадобилось, если это невозможно.

tlp>Вы вообще в курсе про AppCompat (https://msdn.microsoft.com/en-us/library/bb757005.aspx) и про то, что в зависимости от того, как программа запускается, ей может возвращаться разная информация о версии Windows?


Ну кто бы мог подумать! Если запускать программу в режиме совместимости с другой системой, то она вернет версию той системы! Кэп, ты мне открыл глаза, тебе надо срочно повышать звание хотя бы до майора.
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[7]: Знаете ли вы, что...
От: tlp  
Дата: 14.05.15 19:54
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

Q>Здравствуйте, tlp, Вы писали:


Q>>>Это ты у меня спрашиваешь? Мопед не мой, я лишь привел ссылку на MSDN.

tlp>>В которой нет ни слова о том, что функцию собираются отменить. Учимся читать то, что написано, а не то, что придумали у себя в голове.

Q>Приведи правильный перевод выражения "may be altered or unavailable".

Правильный перевод "может поменять поведение или перестать быть доступной".

>Ну да, ее не отменят, но она будет unavailable. Я безумно рад.

Она может стать недоступной. Для тех, кт в танке: может стать, а может и не стать. А может начать возвращать результаты по-другому. А может и не начать.
Re[11]: Знаете ли вы, что...
От: tlp  
Дата: 14.05.15 19:57
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

Q>Здравствуйте, tlp, Вы писали:


Q>>>А как быть тем, кто хочет просто вывести версию в About?

tlp>>Зачем в About своей программы выводить версию ОС?

Q>Знакомая песня. Когда фанатичных защитников чего-либо (не важно чего — Линукса, Виндовса, Андроида, IOS) спрашиваешь как там сделать <то-то> и они сливаются, то сразу же заявляют: а зачем тебе это? Я сколько работаю, мне никогда не понадобилось. Ясен пень не понадобилось, если это невозможно.

Я только спросил — зачем, а вы сразу нервничать начали, вместо того, чтобы ответить.
Мой ответ про то, что документированый и рекомендованый способ получать Version String существует вы предпочли вообще не заметить, понимаю.

tlp>>Вы вообще в курсе про AppCompat (https://msdn.microsoft.com/en-us/library/bb757005.aspx) и про то, что в зависимости от того, как программа запускается, ей может возвращаться разная информация о версии Windows?


Q>Ну кто бы мог подумать! Если запускать программу в режиме совместимости с другой системой, то она вернет версию той системы! Кэп, ты мне открыл глаза, тебе надо срочно повышать звание хотя бы до майора.

А, ну то есть про AppCompat вы были не в курсе, понятно. Хорошо, что теперь в курсе.
Если немного подумаете, то поймете, чт в учловиях наличия AppCompat, использовать GetVersionEx для вывода версии системы в окошке About — весьма раджикумарская затея. Я не очень знаю, сможете вы или нет сделать выводы
Re[10]: Знаете ли вы, что...
От: . Великобритания  
Дата: 15.05.15 20:22
Оценка:
Здравствуйте, tlp, Вы писали:

tlp>

tlp> To obtain the full version number for the operating system, call the GetFileVersionInfo function on one of the system DLLs, such as Kernel32.dll, then call VerQueryValue to obtain the \\StringFileInfo\\<lang><codepage>\\ProductVersion subblock of the file version information.

Бррр... Ещё один гвоздь для приколачивания к 32 битам, да и магические имена файлов в магических директориях — не лучше.

tlp> Q>Приведи правильный перевод выражения "may be altered or unavailable".

tlp> Правильный перевод "может поменять поведение или перестать быть доступной".
И что? Короче — по факту нельзя использовать, т.к. возвращает погоду на Марсе или вообще отсутствует.

tlp> >Ну да, ее не отменят, но она будет unavailable. Я безумно рад.

tlp> Она может стать недоступной. Для тех, кт в танке: может стать, а может и не стать. А может начать возвращать результаты по-другому. А может и не начать.
Короче, можно с таким же успехом rand() использовать, даже лучше — она хоть не перестанет быть доступной.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[11]: Знаете ли вы, что...
От: tlp  
Дата: 15.05.15 21:11
Оценка: +1
Здравствуйте, ., Вы писали:

.>Здравствуйте, tlp, Вы писали:


tlp>>

tlp>> To obtain the full version number for the operating system, call the GetFileVersionInfo function on one of the system DLLs, such as Kernel32.dll, then call VerQueryValue to obtain the \\StringFileInfo\\<lang><codepage>\\ProductVersion subblock of the file version information.

.>Бррр... Ещё один гвоздь для приколачивания к 32 битам , да и магические имена файлов в магических директориях — не лучше.

Ну не позорились бы уже. Нет тут никакого приколачивания к 32-битам (это вы в kerlnel32 увидели 32 и думаете, что на 64-битной винде это будет kernel64? У меня для вас плохие новости...) и магических директорий (где вы вообще директории-то увидели? Вам они во всех строках, где есть слеши, мерещатся?).

tlp>> Q>Приведи правильный перевод выражения "may be altered or unavailable".

tlp>> Правильный перевод "может поменять поведение или перестать быть доступной".
.>И что?
То, что "may be altered or unavailable" не переводится как "собираются отменить". Попросили правильный перевод — я его написал.

>Короче — по факту нельзя использовать, т.к. возвращает погоду на Марсе или вообще отсутствует.

По факту — не рекомендуется использовать в новом коде, а не "функцию собираются отменить в новой версии виндовса". Есть люди, которые видят разницы, ну это ок.
Распределение IQ — bell curve, не всем же быть с одной его стороны

tlp>> >Ну да, ее не отменят, но она будет unavailable. Я безумно рад.

tlp>> Она может стать недоступной. Для тех, кт в танке: может стать, а может и не стать. А может начать возвращать результаты по-другому. А может и не начать.
.>Короче, можно с таким же успехом rand() использовать, даже лучше — она хоть не перестанет быть доступной.
Отличная шутка, браво. Орден Евгения Ваганыча первой степени! %)
Re[12]: Знаете ли вы, что...
От: . Великобритания  
Дата: 15.05.15 22:19
Оценка:
Здравствуйте, tlp, Вы писали:

tlp> Ну не позорились бы уже. Нет тут никакого приколачивания к 32-битам (это вы в kerlnel32 увидели 32 и думаете, что на 64-битной винде это будет kernel64? У меня для вас плохие новости...)

В смысле это 32 несёт какую-то смысловую нагрузку, кроме как 32 бита? Просвети. Я вот почему-то уверен, что были просто вынуждены были оставить неизменным после вот таких вот официальных workarounds "документированных способов".

tlp> и магических директорий (где вы вообще директории-то увидели? Вам они во всех строках, где есть слеши, мерещатся?).

Да... я просто забыл, что GetFileVersionInfo функция с сюрпризом — если не указан полный путь, начинается магия. Хорошо, что Kernel32.dll, скорее всего, загружается одной из первой, обычно.

tlp> .>И что?

tlp> То, что "may be altered or unavailable" не переводится как "собираются отменить". Попросили правильный перевод — я его написал.
Зачем к словам придираться? Суть-то как от этого изменится? "may be altered" и "will be altered" по факту даёт один и тот же результат — использовать больше нельзя.

tlp> >Короче — по факту нельзя использовать, т.к. возвращает погоду на Марсе или вообще отсутствует.

tlp> По факту — не рекомендуется использовать в новом коде
И рекомендуется переписать существующий код.

tlp> , а не "функцию собираются отменить в новой версии виндовса". Есть люди, которые видят разницы, ну это ок.

tlp> Распределение IQ — bell curve, не всем же быть с одной его стороны
Блесни своим распределением — объясни разницу по сути, а не в словах.

tlp> .>Короче, можно с таким же успехом rand() использовать, даже лучше — она хоть не перестанет быть доступной.

tlp> Отличная шутка, браво. Орден Евгения Ваганыча первой степени! %)
Спасибо. Дайте два.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[13]: Знаете ли вы, что...
От: tlp  
Дата: 15.05.15 22:59
Оценка:
Здравствуйте, ., Вы писали:

.>Здравствуйте, tlp, Вы писали:


tlp>> Ну не позорились бы уже. Нет тут никакого приколачивания к 32-битам (это вы в kerlnel32 увидели 32 и думаете, что на 64-битной винде это будет kernel64? У меня для вас плохие новости...)

.>В смысле это 32 несёт какую-то смысловую нагрузку, кроме как 32 бита? Просвети. Я вот почему-то уверен, что были просто вынуждены были оставить неизменным после вот таких вот официальных workarounds "документированных способов".
В смысле равно то, что я сказал с самого начала — предложение использовать kernel32.dll никаким образом ничего не приколачивает к 32-битам. Если вы где-то это приколачивание увидели — скажите где, очень интересо. Если вы не хотите признавать, что просто сказали глупость, лучше просто молчите Иногда лучше жевать.

tlp>> и магических директорий (где вы вообще директории-то увидели? Вам они во всех строках, где есть слеши, мерещатся?).

.>Да... я просто забыл, что GetFileVersionInfo функция с сюрпризом — если не указан полный путь, начинается магия. Хорошо, что Kernel32.dll, скорее всего, загружается одной из первой, обычно.
ОК, свет истины начинает пробиваться через дремучий лес вашей забывчивости

tlp>> .>И что?

tlp>> То, что "may be altered or unavailable" не переводится как "собираются отменить". Попросили правильный перевод — я его написал.
.>Зачем к словам придираться? Суть-то как от этого изменится? "may be altered" и "will be altered" по факту даёт один и тот же результат — использовать больше нельзя.
Затем, что меня попросили перевести фразу правильно. Я уже говорил, что если некоторые люди не видят разницы между модальностями глаголов — ничего страшного, даже хорошо.

tlp>> >Короче — по факту нельзя использовать, т.к. возвращает погоду на Марсе или вообще отсутствует.

tlp>> По факту — не рекомендуется использовать в новом коде
.>И рекомендуется переписать существующий код.
Кем и где рекомендуется? Кнопкодавителем с RSDN?

tlp>> .>Короче, можно с таким же успехом rand() использовать, даже лучше — она хоть не перестанет быть доступной.

tlp>> Отличная шутка, браво. Орден Евгения Ваганыча первой степени! %)
.>Спасибо. Дайте два.
Берите, не жалко.


Re[14]: Знаете ли вы, что...
От: . Великобритания  
Дата: 15.05.15 23:22
Оценка:
Здравствуйте, tlp, Вы писали:

tlp> .>В смысле это 32 несёт какую-то смысловую нагрузку, кроме как 32 бита? Просвети. Я вот почему-то уверен, что были просто вынуждены были оставить неизменным после вот таких вот официальных workarounds "документированных способов".


tlp> В смысле равно то, что я сказал с самого начала — предложение использовать kernel32.dll никаким образом ничего не приколачивает к 32-битам. Если вы где-то это приколачивание увидели — скажите где, очень интересо. Если вы не хотите признавать, что просто сказали глупость, лучше просто молчите Иногда лучше жевать.

Прошу прощения, я заблуждался, что разработку API нужно опирать на логику и здравый смысл, а не на костыли. Но это же Windows...

tlp> .>Да... я просто забыл, что GetFileVersionInfo функция с сюрпризом — если не указан полный путь, начинается магия. Хорошо, что Kernel32.dll, скорее всего, загружается одной из первой, обычно.

tlp> ОК, свет истины начинает пробиваться через дремучий лес вашей забывчивости
И верно. Зачем логически думать, запоминать надо!

tlp> Затем, что меня попросили перевести фразу правильно. Я уже говорил, что если некоторые люди не видят разницы между модальностями глаголов — ничего страшного, даже хорошо.

Спасибо за дословный перевод. Но в данном контексте оба перевода несут одинаковый смысл. Зачем заниматься буквоедством?

tlp> tlp>> По факту — не рекомендуется использовать в новом коде

tlp> .>И рекомендуется переписать существующий код.
tlp> Кем и где рекомендуется? Кнопкодавителем с RSDN?
"Не рекомендуется оставлять в существующем коде, если планируется что код доживёт до следующей версии Windows". Так понятнее?

tlp> .>Спасибо. Дайте два.

tlp> Берите, не жалко.
Я рад, что Вам нравится юмор Вашего кумира.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[15]: Знаете ли вы, что...
От: tlp  
Дата: 16.05.15 00:09
Оценка:
Здравствуйте, ., Вы писали:

.>Здравствуйте, tlp, Вы писали:


tlp>> В смысле равно то, что я сказал с самого начала — предложение использовать kernel32.dll никаким образом ничего не приколачивает к 32-битам. Если вы где-то это приколачивание увидели — скажите где, очень интересо. Если вы не хотите признавать, что просто сказали глупость, лучше просто молчите Иногда лучше жевать.

.>Прошу прощения, я заблуждался, что разработку API нужно опирать на логику и здравый смысл, а не на костыли. Но это же Windows...
Вы предпочли проигнорировать мой совет и в очередной раз продемонстрировать свою некомпетентность. Иногда действительно лучше жевать.

tlp>> ОК, свет истины начинает пробиваться через дремучий лес вашей забывчивости

.>И верно. Зачем логически думать, запоминать надо!
Да, верно. Тем, кто не умеет логически думать (или обладает этой способностью в ограниченной мере), приходится дого и упорно зубрить.

tlp>> Затем, что меня попросили перевести фразу правильно. Я уже говорил, что если некоторые люди не видят разницы между модальностями глаголов — ничего страшного, даже хорошо.

.>Спасибо за дословный перевод. Но в данном контексте оба перевода несут одинаковый смысл. Зачем заниматься буквоедством?
Я уже несколько раз повторял, что если кто-то не видит разницы между модальностями глаголов, то это ок — я не буду тратить время что-то человеку объясняя. Медведя можно научить ездить на велосипеде, но какая медведю от этого будет польза?

tlp>> tlp>> По факту — не рекомендуется использовать в новом коде

tlp>> .>И рекомендуется переписать существующий код.
tlp>> Кем и где рекомендуется? Кнопкодавителем с RSDN?
.>"Не рекомендуется оставлять в существующем коде, если планируется что код доживёт до следующей версии Windows". Так понятнее?
Вы не ответили кем и где рекомендуется. Если рекомендуется вами — так и скажите. Если рекомендуется МС — покажите ссылку.
Re[16]: Знаете ли вы, что...
От: . Великобритания  
Дата: 16.05.15 09:10
Оценка:
Здравствуйте, tlp, Вы писали:

tlp> .>Прошу прощения, я заблуждался, что разработку API нужно опирать на логику и здравый смысл, а не на костыли. Но это же Windows...

tlp> Вы предпочли проигнорировать мой совет и в очередной раз продемонстрировать свою некомпетентность. Иногда действительно лучше жевать.
Раскройте секрет — что значит 32 в названии библиотеки? Скольки битный код находится в файле Kernel32.dll?

tlp> .>И верно. Зачем логически думать, запоминать надо!

tlp> Да, верно. Тем, кто не умеет логически думать (или обладает этой способностью в ограниченной мере), приходится дого и упорно зубрить.
Прошу, продемонстрируйте логическое мышление — ответьте, наконец-то, на вопрос: каким образом можно догадаться, что версия оперционной системы определяется из структуры возвращённой GetFileVersionInfo("Kernel32.dll")?

tlp> Я уже несколько раз повторял, что если кто-то не видит разницы между модальностями глаголов, то это ок — я не буду тратить время что-то человеку объясняя. Медведя можно научить ездить на велосипеде, но какая медведю от этого будет польза?

Я вижу разницу между модальностями, я спрашиваю о разнице в смысле. Слабая модальность "may" даёт уже достаточный вывод, поэтому усиление модальности до "will" смысл не меняет.
Если в тёмном переулке подойдёт человек, потребует кошелёк и скажет "Гони бабки, иначе могу пристрелисть" или "гони бабки, иначе пристрелю" — какая разница?
В общем, если сможете поступить в университет, на специальность близкую к математике, не пропускайте лекции мат-логики, очень пригодится.

tlp> .>"Не рекомендуется оставлять в существующем коде, если планируется что код доживёт до следующей версии Windows". Так понятнее?

tlp> Вы не ответили кем и где рекомендуется. Если рекомендуется вами — так и скажите. Если рекомендуется МС — покажите ссылку.
Ссылка Ваша.

GetVersionEx may be altered or unavailable for releases after Windows 8.1. Instead, use the Version Helper APIs

Мало того, Вы, вроде сами с этим согласились:

tlp> По факту — не рекомендуется использовать в новом коде

но почему-то только частично согласились, почему-то только в новом коде. Я же лишь уточнил, что и в существующем коде тоже, фактически в любом коде. Любопытно знать, откуда Вы взяли информацию о новом коде? Вас не затруднит привести ссылку, упоминающую новый код?
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: Знаете ли вы, что...
От: c-smile Канада http://terrainformatica.com
Дата: 16.05.15 19:09
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

Microsoft собирается отказываться от версий Windows. Т.е. Windows 10 будет единственной post-8 Windows — unified core.
Различия будут в составе инсталлированных модулей. Т.е. например архитектуру процессора можно спросить, а версию нужно будет спрашивать у отдельных модулей.

Как-то так.
Отредактировано 16.05.2015 19:11 c-smile . Предыдущая версия .
Re[14]: Знаете ли вы, что...
От: qwertyuiop Российская Империя  
Дата: 16.05.15 19:26
Оценка:
Здравствуйте, tlp, Вы писали:

tlp>>> То, что "may be altered or unavailable" не переводится как "собираются отменить". Попросили правильный перевод — я его написал.

.>>Зачем к словам придираться? Суть-то как от этого изменится? "may be altered" и "will be altered" по факту даёт один и тот же результат — использовать больше нельзя.
tlp>Затем, что меня попросили перевести фразу правильно. Я уже говорил, что если некоторые люди не видят разницы между модальностями глаголов — ничего страшного, даже хорошо.

Когда приходится сливать, то нужно срочно перевести тему в другое русло. Например в область лингвистики. Придраться, что я всего лишь "просил перевести", а делать выводы из перевода не просил. Поэтому можно их не делать и не рассказывать о том, как будут вести себя старые программу если эта функция будет отменена. Можно позанудствовать на тему, что может ее еще и не отменят, ведь не сказано, что она непременно будет отменена, они лишь может быть отменена. И так далее, и тому подобное. Я не пойму только одного: для чего эта яростная защита? Вы работаете в Майкрософт? Или они вам платят деньги за защиту всех их идиотских решений?
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[17]: Знаете ли вы, что...
От: tlp  
Дата: 18.05.15 16:58
Оценка:
Здравствуйте, ., Вы писали:

.>Здравствуйте, tlp, Вы писали:


tlp>> .>Прошу прощения, я заблуждался, что разработку API нужно опирать на логику и здравый смысл, а не на костыли. Но это же Windows...

tlp>> Вы предпочли проигнорировать мой совет и в очередной раз продемонстрировать свою некомпетентность. Иногда действительно лучше жевать.
>Скольки битный код находится в файле Kernel32.dll?
32-битный, если система 32-битная и 64-битный если система 64-битная. Код для процессора ARM если это WindowsRT, и т. д.

tlp>> .>И верно. Зачем логически думать, запоминать надо!

tlp>> Да, верно. Тем, кто не умеет логически думать (или обладает этой способностью в ограниченной мере), приходится дого и упорно зубрить.
.>Прошу, продемонстрируйте логическое мышление — ответьте, наконец-то, на вопрос: каким образом можно догадаться, что версия оперционной системы определяется из структуры возвращённой GetFileVersionInfo("Kernel32.dll")?
Вы просто задаете неправильный вопрос. "Каким образом можно догадаться" это чуть ли не прямая противоположность логического мышления. Логическое мышление потому и лоическое что не предполагает что кто-то будет о чем-то "догадываться".
Если же вы зададите правильный вопрос ("Как мне узнать точную версию ОС windows, независимо от настроек AppCompat"), ответ будет очевиден ("Использовать способ, который описан в документации").

tlp>> Я уже несколько раз повторял, что если кто-то не видит разницы между модальностями глаголов, то это ок — я не буду тратить время что-то человеку объясняя. Медведя можно научить ездить на велосипеде, но какая медведю от этого будет польза?

.>Я вижу разницу между модальностями, я спрашиваю о разнице в смысле. Слабая модальность "may" даёт уже достаточный вывод, поэтому усиление модальности до "will" смысл не меняет.
.>Если в тёмном переулке подойдёт человек, потребует кошелёк и скажет "Гони бабки, иначе могу пристрелисть" или "гони бабки, иначе пристрелю" — какая разница?
А, вот наконец и начинает вылезать уровень развития, на котором вы понимаете модальности глаголов, это примерно то же самое, что я предполагал.

.>В общем, если сможете поступить в университет, на специальность близкую к математике, не пропускайте лекции мат-логики, очень пригодится.

Большое спасибо за совет, жаль, что у меня не получится им воспользоваться. Вам же, в ответ, я посоветую почитать для начала RFC 6919. (Когда будет свободное время между лекциями матлогики и античной философии)

.>но почему-то только частично согласились, почему-то только в новом коде. Я же лишь уточнил, что и в существующем коде тоже, фактически в любом коде. Любопытно знать, откуда Вы взяли информацию о новом коде? Вас не затруднит привести ссылку, упоминающую новый код?

Несомненно.

http://www.microsoft.com/download/en/details.aspx?id=27416

Manifestation
In Windows 8.1, the GetVersion(Ex) APIs have been deprecated. That means that while you can still call the APIs, if your app does not specifically target Windows 8.1, you will get Windows 8 versioning (6.2.0.0).

Solution
In order to target Windows 8.1, you need to either include the app manifest or include _NT_TARGET_VERSION=$ (_NT_TARGET_VERSION_LATEST) in the source file.



Т.е. написано прямым текстом: API исполльзовать можно (т.е. все программы переписывать не надо), изменения нужны для программ, которым нужно проверять совместимось с windows 8.1, т.е. для новых программ.


резюме: чтение правильных текстов и исползования собственной головы по назначению творит чудеса.
Отредактировано 18.05.2015 17:04 tlp . Предыдущая версия .
Re[15]: Знаете ли вы, что...
От: tlp  
Дата: 18.05.15 17:03
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

Q>Здравствуйте, tlp, Вы писали:


tlp>>>> То, что "may be altered or unavailable" не переводится как "собираются отменить". Попросили правильный перевод — я его написал.

.>>>Зачем к словам придираться? Суть-то как от этого изменится? "may be altered" и "will be altered" по факту даёт один и тот же результат — использовать больше нельзя.
tlp>>Затем, что меня попросили перевести фразу правильно. Я уже говорил, что если некоторые люди не видят разницы между модальностями глаголов — ничего страшного, даже хорошо.

Q>Когда приходится сливать, то нужно срочно перевести тему в другое русло.

Когда уже слил в другой ветке, но баттхерт очень сильный, приходится влезать в чужие разговоры и многозначительно рассказывать про чужие сливы

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

Рассуждать о том, как будут вести себя старые программы, если функция будет отменена — это примерно то же самое, что рассуждать о том, что будет если землю завоюют марсиане. На это просто лень тратить время

>Я не пойму только одного: для чего эта яростная защита?

Я уже говорил, что просто не люблю проявления эффекта Даннинга-Крюгера на программерских форумах. Работаю санитаром леса в меру возможностей.
Отредактировано 18.05.2015 17:05 tlp . Предыдущая версия .
Re[18]: Знаете ли вы, что...
От: . Великобритания  
Дата: 18.05.15 22:38
Оценка:
Здравствуйте, tlp, Вы писали:

tlp> >Скольки битный код находится в файле Kernel32.dll?

tlp> 32-битный, если система 32-битная и 64-битный если система 64-битная. Код для процессора ARM если это WindowsRT, и т. д.
Повторю вопрос, который Вы упорно игнорируете. Что значит "32" в имени "Kernel32.dll"?

tlp> .>Прошу, продемонстрируйте логическое мышление — ответьте, наконец-то, на вопрос: каким образом можно догадаться, что версия оперционной системы определяется из структуры возвращённой GetFileVersionInfo("Kernel32.dll")?

tlp> Вы просто задаете неправильный вопрос. "Каким образом можно догадаться" это чуть ли не прямая противоположность логического мышления. Логическое мышление потому и лоическое что не предполагает что кто-то будет о чем-то "догадываться".
tlp> Если же вы зададите правильный вопрос ("Как мне узнать точную версию ОС windows, независимо от настроек AppCompat"), ответ будет очевиден ("Использовать способ, который описан в документации").
В документации, которая попадается самой первой — это GetVersion и GetVersionEx, про которые написано "Instead, use the Version Helper APIs", и эта ссылка ведёт на тот самый бредовый код, который был приведён в начальном сообщении этого топика.
Возможно, если логически подумать, то станет очевидно, что в msdn, как обычно, — лажа, нужно погуглить повнимательнее, задать вопрос на форуме и возможно удастся наткнуться на GetFileVersionInfo("Kernel32.dll").
Возможно это не недостаток самого API, а просто такая документация, но от этого не сильно легче.

tlp> .>Если в тёмном переулке подойдёт человек, потребует кошелёк и скажет "Гони бабки, иначе могу пристрелисть" или "гони бабки, иначе пристрелю" — какая разница?

tlp> А, вот наконец и начинает вылезать уровень развития, на котором вы понимаете модальности глаголов, это примерно то же самое, что я предполагал.
Я очень надеюсь, что мой уровень развития для Вас достаточен, чтобы Вы соблаговолили потрудиться и ответить на вопрос: какая разница в смысле фразы?
К чему эти все переводческие изыски?

tlp> Большое спасибо за совет, жаль, что у меня не получится им воспользоваться.

Неужели на ин-яз угораздило? С переводами у Вас всё равно плохо, попробуйте перевестись, на первых курсах ещё можно, вроде. Но будет очень тяжело, но что ж... надо было лучше к ЕГЭ готовиться.

tlp> Вам же, в ответ, я посоветую почитать для начала RFC 6919. (Когда будет свободное время между лекциями матлогики и античной философии)

Спасибо! Интересно. Прочел во время тихого часа, пока воспиталка к нянечкам ушла.

tlp> .>но почему-то только частично согласились, почему-то только в новом коде. Я же лишь уточнил, что и в существующем коде тоже, фактически в любом коде. Любопытно знать, откуда Вы взяли информацию о новом коде? Вас не затруднит привести ссылку, упоминающую новый код?


tlp> Несомненно.


tlp> http://www.microsoft.com/download/en/details.aspx?id=27416

tlp> Т.е. написано прямым текстом: API исполльзовать можно (т.е. все программы переписывать не надо), изменения нужны для программ, которым нужно проверять совместимось с windows 8.1, т.е. для новых программ.
Тут говорится, лишь то, что в 8.1 эта функция возвращает версию ту же, что и 8. Ничего про новые программы тут не сказано. Мало того, в этом тексте говорится только о поведении в 8.1. А о следующих версиях сказано в доке, приведённой выше: "may be altered or unavailable for releases after Windows 8.1".
Т.е. если разработчик желает, чтобы его программа заработала на следующих версия Винды, то он не должен использовать эту функцию.

tlp> резюме: чтение правильных текстов и исползования собственной головы по назначению творит чудеса.

И где же логика в чтении "правильных текстов"? Тупо зубрёжка. В каком месте тут нужна голова? Где логика? Прочитал тонну документации и всё.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[19]: Знаете ли вы, что...
От: tlp  
Дата: 19.05.15 00:00
Оценка: +1
Здравствуйте, ., Вы писали:

.>Здравствуйте, tlp, Вы писали:


tlp>> >Скольки битный код находится в файле Kernel32.dll?

tlp>> 32-битный, если система 32-битная и 64-битный если система 64-битная. Код для процессора ARM если это WindowsRT, и т. д.
.>Повторю вопрос, который Вы упорно игнорируете. Что значит "32" в имени "Kernel32.dll"?
Я не знаю, что значит 32 в имени kernel32.dll. То, что оно значит, не имеет отношения к тому, с чего начинался наш с вами разговор. Я напомню, если вы забыли: все началось с того, что вы заявили, что чтение версии kernel32.dll это привязка к 32-битам, потом у жас безуспешно просил мне объяснить, где вы ее там увидели и мягко намекал, чтобы вы не позорились и хотя бы сами разобрались сначала, но вы предпочитаете продолжаь доставлять мне и всем другим читателям лулзы.

.>Возможно, если логически подумать, то станет очевидно, что в msdn, как обычно, — лажа, нужно погуглить повнимательнее, задать вопрос на форуме и возможно удастся наткнуться на GetFileVersionInfo("Kernel32.dll").

LOL. Текст про kernel32.dll, который я вам привел, написал в MSDN. В разделе, который называется "Getting the System Version", второй абзац про то, как получить поную версию ОС.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724429%28v=vs.85%29.aspx
"Как обычно — лажа" он для тех, у кого проблемы с пониманием того, что написано. Ну то есть в том числе и для Раджикумаров.

tlp>> Большое спасибо за совет, жаль, что у меня не получится им воспользоваться.

.>Неужели на ин-яз угораздило? С переводами у Вас всё равно плохо, попробуйте перевестись, на первых курсах ещё можно, вроде. Но будет очень тяжело, но что ж... надо было лучше к ЕГЭ готовиться.
Нет, я просто уже закончил университет, второй раз посутпать мне нет необходимости.

tlp>> Вам же, в ответ, я посоветую почитать для начала RFC 6919. (Когда будет свободное время между лекциями матлогики и античной философии)

.>Спасибо! Интересно. Прочел во время тихого часа, пока воспиталка к нянечкам ушла.
Я почему-то думаю, что вы врете, либо опять не поняли то, что прочитали (как уже было со статьей в MSDN выше)

tlp>> http://www.microsoft.com/download/en/details.aspx?id=27416

.>Т.е. если разработчик желает, чтобы его программа заработала на следующих версия Винды, то он не должен использовать эту функцию.
Нет, этого там не написано. Особенно про "должен, чтобы заработала". Мне уже надоело вам указывать на то, что вы не понимаете разницы между модальностями глаголов ("хочет", "должен", "может", "обязан", "вынужден" и т д — это разные слова, несущие разную смысловую нагрузку. То, что вы ее не видите и регулярно просите вам ее показать, а вам ее не показывают, не говорит о том, что ее нет )

tlp>> резюме: чтение правильных текстов и исползования собственной головы по назначению творит чудеса.

.>И где же логика в чтении "правильных текстов"? Тупо зубрёжка. В каком месте тут нужна голова? Где логика? Прочитал тонну документации и всё.
А, ну если простое понимание написанного такста для вас представляет сложности то да, зубрежка. Я уже раньше сказал, что не всем быть с одной стороны bell curve.
Re: Знаете ли вы, что...
От: Aртём Австралия жж
Дата: 19.05.15 06:59
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

  Скрытый текст
Q>Функцию GetVersionEx собираются отменить и теперь получить версию системы можно будет таким изящным кодом:
Q>
Q>    if (IsWindowsXPOrGreater())
Q>    {
Q>        printf("XPOrGreater\n");
Q>    }

Q>    if (IsWindowsXPSP1OrGreater())
Q>    {
Q>        printf("XPSP1OrGreater\n");
Q>    }

Q>    if (IsWindowsXPSP2OrGreater())
Q>    {
Q>        printf("XPSP2OrGreater\n");
Q>    }

Q>    if (IsWindowsXPSP3OrGreater())
Q>    {
Q>        printf("XPSP3OrGreater\n");
Q>    }

Q>    if (IsWindowsVistaOrGreater())
Q>    {
Q>        printf("VistaOrGreater\n");
Q>    }

Q>    if (IsWindowsVistaSP1OrGreater())
Q>    {
Q>        printf("VistaSP1OrGreater\n");
Q>    }

Q>    if (IsWindowsVistaSP2OrGreater())
Q>    {
Q>        printf("VistaSP2OrGreater\n");
Q>    }

Q>    if (IsWindows7OrGreater())
Q>    {
Q>        printf("Windows7OrGreater\n");
Q>    }

Q>    if (IsWindows7SP1OrGreater())
Q>    {
Q>        printf("Windows7SP1OrGreater\n");
Q>    }

Q>    if (IsWindows8OrGreater())
Q>    {
Q>        printf("Windows8OrGreater\n");
Q>    }

Q>    if (IsWindows8Point1OrGreater())
Q>    {
Q>        printf("Windows8Point1OrGreater\n");
Q>    }

Q>    if (IsWindows10OrGreater())
Q>    {
Q>        printf("Windows10OrGreater\n");
Q>    }

Q>    if (IsWindowsServer())
Q>    {
Q>        printf("Server\n");
Q>    }
Q>    else
Q>    {
Q>        printf("Client\n");
Q>    }
Q>


Ушёл на пенсию / в гугл/ FB/ и т.д. последний бледнокожий писатель API
Re[20]: Знаете ли вы, что...
От: . Великобритания  
Дата: 19.05.15 10:33
Оценка: 1 (1) +3
Здравствуйте, tlp, Вы писали:

tlp>>> >Скольки битный код находится в файле Kernel32.dll?

tlp>>> 32-битный, если система 32-битная и 64-битный если система 64-битная. Код для процессора ARM если это WindowsRT, и т. д.
.>>Повторю вопрос, который Вы упорно игнорируете. Что значит "32" в имени "Kernel32.dll"?
tlp>Я не знаю, что значит 32 в имени kernel32.dll. То, что оно значит, не имеет отношения к тому, с чего начинался наш с вами разговор. Я напомню, если вы забыли: все началось с того, что вы заявили, что чтение версии kernel32.dll это привязка к 32-битам, потом у жас безуспешно просил мне объяснить, где вы ее там увидели и мягко намекал, чтобы вы не позорились и хотя бы сами разобрались сначала, но вы предпочитаете продолжаь доставлять мне и всем другим читателям лулзы.
Как так? Вроде выступаете как Advanced Expert in Windows Version API, а не знаете. Я расскажу:

Base Services
Provide access to the fundamental resources available to a Windows system. Included are things like file systems, devices, processes, threads, and error handling. These functions reside in kernel.exe, krnl286.exe or krnl386.exe files on 16-bit Windows, and kernel32.dll on 32-bit Windows.

kernel32.dll был создан во времена 32 бит, как альтернатива к 16. А потом, благодаря вот таким вот гениальным решениям, рекомендованным самим MS многие программы привязаны к имени файла kernel32.dll, поэтому при выпуске 64-битной версии они были вынуждены сохранить имя файла. Было бы логичным шагом назвать библиотеки kernel64.dll или kernelARM.dll... но индусов расстраивать нельзя.

It's always called kernel32.dll, even on 64-bit windows. This is for the same compatibility reasons that system32 contains 64-bit binaries, while syswow64 contains 32-bit binaries.

Так что, к сожалению, лулзы доставляю не я, а MS, правда многим эти лулзы были доставлены давным давно, баян однако, и Вам желаю посмеяться — отличное средство от баттхерта.

tlp>>> Большое спасибо за совет, жаль, что у меня не получится им воспользоваться.

.>>Неужели на ин-яз угораздило? С переводами у Вас всё равно плохо, попробуйте перевестись, на первых курсах ещё можно, вроде. Но будет очень тяжело, но что ж... надо было лучше к ЕГЭ готовиться.
tlp>Нет, я просто уже закончил университет, второй раз посутпать мне нет необходимости.
Жаль, и куда Вам теперь с дипломом иняза? Возьмите что-ли кредит, вторая вышка только платно, но хорошее образование стоит того.

tlp>>> http://www.microsoft.com/download/en/details.aspx?id=27416

.>>Т.е. если разработчик желает, чтобы его программа заработала на следующих версия Винды, то он не должен использовать эту функцию.
tlp>Нет, этого там не написано. Особенно про "должен, чтобы заработала". Мне уже надоело вам указывать на то, что вы не понимаете разницы между модальностями глаголов ("хочет", "должен", "может", "обязан", "вынужден" и т д — это разные слова, несущие разную смысловую нагрузку. То, что вы ее не видите и регулярно просите вам ее показать, а вам ее не показывают, не говорит о том, что ее нет )
Так Вы показываете какую-то фигню. Текст который вы привели — только о 8.1, читайте внимательнее, закажите профессиональный перевод, если мне не доверяете. А в доке на функцию написано "...Use instead...", без всяких модальностей, "may be altered/unavailable" относится к обоснованию почему надо "use instead".

tlp>>> резюме: чтение правильных текстов и исползования собственной головы по назначению творит чудеса.

.>>И где же логика в чтении "правильных текстов"? Тупо зубрёжка. В каком месте тут нужна голова? Где логика? Прочитал тонну документации и всё.
tlp>А, ну если простое понимание написанного такста для вас представляет сложности то да, зубрежка. Я уже раньше сказал, что не всем быть с одной стороны bell curve.
Я спрашиваю о наличии логики. Это же просто констатация фактов, "works as coded", а не продуманный API.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[21]: Знаете ли вы, что...
От: tlp  
Дата: 19.05.15 16:59
Оценка:
Здравствуйте, ., Вы писали:

.>Здравствуйте, tlp, Вы писали:


tlp>>>> >Скольки битный код находится в файле Kernel32.dll?

tlp>>>> 32-битный, если система 32-битная и 64-битный если система 64-битная. Код для процессора ARM если это WindowsRT, и т. д.
.>>>Повторю вопрос, который Вы упорно игнорируете. Что значит "32" в имени "Kernel32.dll"?
tlp>>Я не знаю, что значит 32 в имени kernel32.dll.
.>Как так? Вроде выступаете как Advanced Expert in Windows Version API, а не знаете.
Я выступаю как санитар леса, борящийся я невежеством на форуме.

>Я расскажу:

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

.>Так что, к сожалению, лулзы доставляю не я, а MS, правда многим эти лулзы были доставлены давным давно, баян однако, и Вам желаю посмеяться — отличное средство от баттхерта.

Я с самого начала начала вам сказалчто kernel32.dll никак не привязывает никого к 32 битам. Вы наконец погуглили и нашли, почему. Если ваш баттхерт от этого стал слабее — это отлично.

.>Жаль, и куда Вам теперь с дипломом иняза? Возьмите что-ли кредит, вторая вышка только платно, но хорошее образование стоит того.

Вы невнимателньо читаете, я нигде не говорил, что закончил именно иняз. Но у вас такой сильный баттхерт, что приходится хвататься за любою соломинку. Продолжайте, умоляю!

>Так Вы показываете какую-то фигню.

>Текст который вы привели — только о 8.1, читайте внимательнее, закажите профессиональный перевод, если мне не доверяете.
>А в доке на функцию написано "...Use instead...", без всяких модальностей, "may be altered/unavailable" относится к обоснованию почему надо "use instead".

Мамочки, какой же вы тупсмешной!
Вам уже несколько раз с разных углов показали, что лучше жевать, чем говорить, уже привели ссылки на документацию МС, уже даже попытались объяснить, в чем разница между модальностями глаголов (безуспешно), а вы все никак не успокоитесь. Я больше не могу смеяться.

tlp>>А, ну если простое понимание написанного такста для вас представляет сложности то да, зубрежка. Я уже раньше сказал, что не всем быть с одной стороны bell curve.

.>Я спрашиваю о наличии логики. Это же просто констатация фактов, "works as coded", а не продуманный API.
А я не спрашиваю о наличии логики, я констатирую факты относительно способности понимать простые тексты
Re[22]: Знаете ли вы, что...
От: . Великобритания  
Дата: 19.05.15 19:34
Оценка:
Здравствуйте, tlp, Вы писали:

tlp> .>Как так? Вроде выступаете как Advanced Expert in Windows Version API, а не знаете.

tlp> Я выступаю как санитар леса, борящийся я невежеством на форуме.
Невежества не увидел, кроме как кривого дизайна API.

tlp> >Я расскажу:

tlp> Браво, вы наконец осилили воспользоваться гуглом. Если бы вы это сделали чуть раньше, не опозорились бы на весь форум громкими глупыми заявлениями
По этой теме я пользовался гуглом ещё несколько лет назад. В каком месте громкие заявления?

tlp> .>Так что, к сожалению, лулзы доставляю не я, а MS, правда многим эти лулзы были доставлены давным давно, баян однако, и Вам желаю посмеяться — отличное средство от баттхерта.

tlp> Я с самого начала начала вам сказалчто kernel32.dll никак не привязывает никого к 32 битам. Вы наконец погуглили и нашли, почему. Если ваш баттхерт от этого стал слабее — это отлично.
Я не утверждал, что программа будет 32-битной, с чего вы это насочиняли? Не надо так категорично, kernel32.dll привязывает Windows и программы для него написанные под мудрым руководством MSDN к наследию 32 бит. Вот спросят Вас внуки — а почему тут в коде 32 написано, ведь последняя 32-битная кофемолка считается музейной редкостью, и Вы начнёте вспоминать мифы древнего Микрософта... но где же логика? Почему версию 64-винды надо определять командой GetFileVersionInfo("kernel32.dll")? Чем GetVersion() не угодило? Выглядит, по крайней мере, гораздо логичнее.

tlp> .>Жаль, и куда Вам теперь с дипломом иняза? Возьмите что-ли кредит, вторая вышка только платно, но хорошее образование стоит того.

tlp> Вы невнимателньо читаете, я нигде не говорил, что закончил именно иняз. Но у вас такой сильный баттхерт, что приходится хвататься за любою соломинку. Продолжайте, умоляю!
Я предположил... неужели кафедра теологии? Иначе как ещё объяснить гуманитарный склад ума, когда логикой считается 167-страничный талмуд с 64 битным kernel32, и такое трепетное отношение к лингвистическим изыскам?

tlp> >Так Вы показываете какую-то фигню.

tlp> >Текст который вы привели — только о 8.1, читайте внимательнее, закажите профессиональный перевод, если мне не доверяете.
tlp> >А в доке на функцию написано "...Use instead...", без всяких модальностей, "may be altered/unavailable" относится к обоснованию почему надо "use instead".
tlp> Мамочки, какой же вы тупсмешной!
А по сути есть что возразить? Или как обычно, подход как в Политике? Сливаешь — переходи на личности.

tlp> Вам уже несколько раз с разных углов показали, что лучше жевать, чем говорить, уже привели ссылки на документацию МС, уже даже попытались объяснить, в чем разница между модальностями глаголов (безуспешно), а вы все никак не успокоитесь. Я больше не могу смеяться.

Пожалуйста, отвлекитесь на минуточку ответьте на вопрос: где в фразе "Instead, use the Version Helper APIs" модальные глаголы?
Спасибо, можете продолжать смеяться.

tlp> .>Я спрашиваю о наличии логики. Это же просто констатация фактов, "works as coded", а не продуманный API.


tlp> А я не спрашиваю о наличии логики, я констатирую факты относительно способности понимать простые тексты

Вы и не спрашиваете, и не отвечаете на прямые вопросы, только наезды на личность и софизмы. Кыш обратно, в Политику.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[23]: Знаете ли вы, что...
От: tlp  
Дата: 19.05.15 20:36
Оценка:
Здравствуйте, ., Вы писали:

.>Здравствуйте, tlp, Вы писали:


tlp>> .>Как так? Вроде выступаете как Advanced Expert in Windows Version API, а не знаете.

tlp>> Я выступаю как санитар леса, борящийся я невежеством на форуме.
.>Невежества не увидел, кроме как кривого дизайна API.
Невежество — это ваши сообщения про привязку к 32 битам, например.

.>По этой теме я пользовался гуглом ещё несколько лет назад. В каком месте громкие заявления?

Вот в этом: http://rsdn.ru/forum/humour/6049698.1
Автор: .
Дата: 15.05.15

Бррр... Ещё один гвоздь для приколачивания к 32 битам, да и магические имена файлов в магических директориях — не лучше.


.>Я не утверждал, что программа будет 32-битной, с чего вы это насочиняли?

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

>Не надо так категорично, kernel32.dll привязывает Windows и программы для него написанные под мудрым руководством MSDN к наследию 32 бит.

Ну вот, начали пытаться выкручиваться. Гооворил же — не получится.

.>А по сути есть что возразить? Или как обычно, подход как в Политике? Сливаешь — переходи на личности.

По сути все уже было неоднократно сказано, теперь я просто развлекаюсь, отвечая на ваши сообщения и поддерживая высокую температуру у вас пониже спины. Как надоест — перестану.

tlp>> Вам уже несколько раз с разных углов показали, что лучше жевать, чем говорить, уже привели ссылки на документацию МС, уже даже попытались объяснить, в чем разница между модальностями глаголов (безуспешно), а вы все никак не успокоитесь. Я больше не могу смеяться.

.>Пожалуйста, отвлекитесь на минуточку ответьте на вопрос: где в фразе "Instead, use the Version Helper APIs" модальные глаголы?
.>Спасибо, можете продолжать смеяться.
Нет, это уже просто невозможно, уже до слёз.
"У вас ширика расстегнута! — У меня рубашка не мятая! — У вас ширика расстегнута! — Ты разве видел складки на моей рубашке, поганый тролль?!"

tlp>> А я не спрашиваю о наличии логики, я констатирую факты относительно способности понимать простые тексты

.>Вы и не спрашиваете, и не отвечаете на прямые вопросы, только наезды на личность и софизмы. Кыш обратно, в Политику.
Спасибо, я предпочитаю сам решать на какие вопросы отвечать и в какой форме. Если вам не нравится как жжет пониже спины — жалуйтесь модераторам
Re[24]: Знаете ли вы, что...
От: . Великобритания  
Дата: 19.05.15 21:03
Оценка:
Здравствуйте, tlp, Вы писали:

tlp> .>Невежества не увидел, кроме как кривого дизайна API.

tlp> Невежество — это ваши сообщения про привязку к 32 битам, например.
Не привязки, а приколачивания гвоздями — уши 32 бит торчат повсюду.

tlp> А я не говорию, что вы это утверждали, я цитирую ваши слова про "гвозь дял приколачивания к 32 битам".

tlp> Вы, похоже, иняз не заканчивали и выкрутиться, используя лингвистические выверты, у вас не получится
Какие ещё выверты? Я знал, что kernel32.dll 64-битное. Но у меня теплилась надежда, что они это объявят deprecated и через пару версий выкинут. Но нет, они выкидывают нормальные функции типа GetVersion и приколачивают всё к kernel32.dll, как рекомендованное решение!

tlp> >Не надо так категорично, kernel32.dll привязывает Windows и программы для него написанные под мудрым руководством MSDN к наследию 32 бит.

tlp> Ну вот, начали пытаться выкручиваться. Гооворил же — не получится.
Если не так поняли, прошу прощения. Я, видимо, неудачно подобрал эпитет.

tlp> .>А по сути есть что возразить? Или как обычно, подход как в Политике? Сливаешь — переходи на личности.


tlp> По сути все уже было неоднократно сказано, теперь я просто развлекаюсь, отвечая на ваши сообщения и поддерживая высокую температуру у вас пониже спины. Как надоест — перестану.

Сказано было одно — "читайте священное писаниеmsdn, притом все евангелия, и верьте в непогрешимость Слова Майкрософтова". Я пытался увидеть разумность, логичность, но кроме как "не обижайте индусов, читайте доки" — ничего.

tlp> .>Пожалуйста, отвлекитесь на минуточку ответьте на вопрос: где в фразе "Instead, use the Version Helper APIs" модальные глаголы?

tlp> .>Спасибо, можете продолжать смеяться.

tlp> Нет, это уже просто невозможно, уже до слёз.

tlp> "У вас ширика расстегнута! — У меня рубашка не мятая! — У вас ширика расстегнута! — Ты разве видел складки на моей рубашке, поганый тролль?!"
Мрак.

tlp> Спасибо, я предпочитаю сам решать на какие вопросы отвечать и в какой форме. Если вам не нравится как жжет пониже спины — жалуйтесь модераторам

Ф Политику.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[25]: Знаете ли вы, что...
От: tlp  
Дата: 19.05.15 21:58
Оценка:
Здравствуйте, ., Вы писали:

.>Здравствуйте, tlp, Вы писали:


tlp>> .>Невежества не увидел, кроме как кривого дизайна API.

tlp>> Невежество — это ваши сообщения про привязку к 32 битам, например.
.>Не привязки, а приколачивания гвоздями — уши 32 бит торчат повсюду.
Повторяйте — повторяйте! Это так весело!.

.>Какие ещё выверты? Я знал, что kernel32.dll 64-битное.

Ваши посты в этой веке говорят о том, что вы либо не знали, либо очень умело прикидывались, задавая вопросы про то "какой разрядности код лежит в kerlnel32.dll" и разглаголствуя про "приколачивания к 32-битам".

>Но у меня теплилась надежда, что они это объявят deprecated и через пару версий выкинут.

Надо же! У вас теплилась надежда, что в МС сидят Раджикумары вашего уровня, но она не оправдалась и все оказалось гораздо сложнее. Оказывается, саппорт ОС windows нельзя делать так, как вы предлагаете, а учить API нахрапом, почитав MSDN по верхам не получается. Вот это новости!

tlp>> Ну вот, начали пытаться выкручиваться. Гооворил же — не получится.

.>Если не так поняли, прошу прощения. Я, видимо, неудачно подобрал эпитет.
Вы не только неудачно выбрали эпитет, вы потом еще сделали далеко идущие выводы.
Короче говоря: https://www.youtube.com/watch?v=3FQ6R6R49u8
Re[26]: Знаете ли вы, что...
От: . Великобритания  
Дата: 19.05.15 22:27
Оценка:
Здравствуйте, tlp, Вы писали:

tlp> .>Какие ещё выверты? Я знал, что kernel32.dll 64-битное.

tlp> Ваши посты в этой веке говорят о том, что вы либо не знали, либо очень умело прикидывались, задавая вопросы про то "какой разрядности код лежит в kerlnel32.dll" и разглаголствуя про "приколачивания к 32-битам".
Я пытался подвести Вас к мысли, что название не соответствует содержимому. А вы оправдывали это "ну так же в доках написано и всем известно". Т.е. никакой логики и тупая зубрёжка документации.

tlp> >Но у меня теплилась надежда, что они это объявят deprecated и через пару версий выкинут.

tlp> Надо же! У вас теплилась надежда, что в МС сидят Раджикумары вашего уровня, но она не оправдалась и все оказалось гораздо сложнее. Оказывается, саппорт ОС windows нельзя делать так, как вы предлагаете, а учить API нахрапом, почитав MSDN по верхам не получается. Вот это новости!
Ой, прошу прощения. Видимо, я ставлю под сомнение Ваши священные ценности. Но, извините, создание трудностей и героическая борьба с ними — не самый разумный подход.

tlp> Вы не только неудачно выбрали эпитет, вы потом еще сделали далеко идущие выводы.

tlp> Короче говоря: https://www.youtube.com/watch?v=3FQ6R6R49u8
Вы серьёзно считаете, что такой дизайн API самый разумный?
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[27]: Знаете ли вы, что...
От: tlp  
Дата: 19.05.15 22:59
Оценка:
Здравствуйте, ., Вы писали:

.>Здравствуйте, tlp, Вы писали:


tlp>> .>Какие ещё выверты? Я знал, что kernel32.dll 64-битное.

tlp>> Ваши посты в этой веке говорят о том, что вы либо не знали, либо очень умело прикидывались, задавая вопросы про то "какой разрядности код лежит в kerlnel32.dll" и разглаголствуя про "приколачивания к 32-битам".
.>Я пытался подвести Вас к мысли, что название не соответствует содержимому. А вы оправдывали это "ну так же в доках написано и всем известно". Т.е. никакой логики и тупая зубрёжка документации.
А я пытался донести до вас мысль, что иногда лучше жевать, чем говорить глупости. То, что название не соотвествует содержимому вы спешно осознали, уже после того, как сморозили глупость насчет "прколачивания к 32-битам".

К слову, если вы думаете, что названия, несоотвествующие содержимому — это что-то специфичное только для МС, у меня для вас снова плохие новости

.>Ой, прошу прощения. Видимо, я ставлю под сомнение Ваши священные ценности.

Нет, вы ничего не ставите под сомнение. Вы просто доставляете лулзы.

tlp>> Вы не только неудачно выбрали эпитет, вы потом еще сделали далеко идущие выводы.

tlp>> Короче говоря: https://www.youtube.com/watch?v=3FQ6R6R49u8
.>Вы серьёзно считаете, что такой дизайн API самый разумный?
Я считаю, что люди, принимающие решения о дизайне API из МС существенно умнее кнопкодавителей с RSDN
Re[16]: Знаете ли вы, что...
От: qwertyuiop Российская Империя  
Дата: 20.05.15 06:24
Оценка: :)
Здравствуйте, tlp, Вы писали:

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

tlp>Рассуждать о том, как будут вести себя старые программы, если функция будет отменена — это примерно то же самое, что рассуждать о том, что будет если землю завоюют марсиане.

Вы этим сравнением пытаетесь доказать, что она не может быть изменена или стать недоступной? Но это написано в MSDN, вы же сами перевели мне
Автор: tlp
Дата: 14.05.15
. А то, что она может и не стать — это слабое утешение.
Я отвечаю за свои слова, а не за то как вы их интерпретируете!
Re[28]: Знаете ли вы, что...
От: . Великобритания  
Дата: 20.05.15 09:01
Оценка: :)
Здравствуйте, tlp, Вы писали:

tlp>>> .>Какие ещё выверты? Я знал, что kernel32.dll 64-битное.

tlp>>> Ваши посты в этой веке говорят о том, что вы либо не знали, либо очень умело прикидывались, задавая вопросы про то "какой разрядности код лежит в kerlnel32.dll" и разглаголствуя про "приколачивания к 32-битам".
.>>Я пытался подвести Вас к мысли, что название не соответствует содержимому. А вы оправдывали это "ну так же в доках написано и всем известно". Т.е. никакой логики и тупая зубрёжка документации.
tlp>А я пытался донести до вас мысль, что иногда лучше жевать, чем говорить глупости. То, что название не соотвествует содержимому вы спешно осознали, уже после того, как сморозили глупость насчет "прколачивания к 32-битам".
Зря старались, это я узнал об этом несколько лет назад, когда первые версии 64-бит начали выходить на рынок — это же был неисчерпаемый источник лулзов.

tlp>К слову, если вы думаете, что названия, несоотвествующие содержимому — это что-то специфичное только для МС, у меня для вас снова плохие новости

Конечно, но пытаться конкурировать с ними в этом практически невозможно — загребут за особо крупные размеры, и не поверят что всё это для собственного потребления.
Удивительно, что есть люди, которые это воспринимают нормально и радуются чтению 167-страничных талмудов для тривиальных задач.

.>>Ой, прошу прощения. Видимо, я ставлю под сомнение Ваши священные ценности.

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

tlp>>> Вы не только неудачно выбрали эпитет, вы потом еще сделали далеко идущие выводы.

tlp>>> Короче говоря: https://www.youtube.com/watch?v=3FQ6R6R49u8
.>>Вы серьёзно считаете, что такой дизайн API самый разумный?
tlp>Я считаю, что люди, принимающие решения о дизайне API из МС существенно умнее кнопкодавителей с RSDN
Т.е. безоговорочно верите авторитетам? А своего мнения нет?
Не понял, а что конкретно по этой ссылке?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[11]: Знаете ли вы, что...
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.05.15 06:14
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

Q>Знакомая песня. Когда фанатичных защитников чего-либо (не важно чего — Линукса, Виндовса, Андроида, IOS) спрашиваешь как там сделать <то-то> и они сливаются, то сразу же заявляют: а зачем тебе это? Я сколько работаю, мне никогда не понадобилось. Ясен пень не понадобилось, если это невозможно.

Дело не в этом.
Дело в том, что невинно выглядящие API типа GetVersion() провоцируют людей на контрпродуктивное поведение.
Если копнуть поглубже, то внезапно окажется, что в 99% случаев код, написанный с участием GetVersion() — неправильный.

Вот, скажем, веб-разработчикам уже лет пять, если не десять, рекомендуют не заниматься исследованиями версии браузера, а использовать feature detection.
То же самое и с виндой — для чего нам номер версии?
Как правило, он нужен не сам по себе, а для feature detection. Раджеш видел три машины, из которых его код работал на двух. Он бегло осмотрел их, и пришёл к выводу, что разница — в версиях винды. Он бодренько добавил код с if (...), проверяя на версию 6.1, и всё заработало. Потом оказалось, что на 6.2 его программа не работает — пришлось подпиливать код, который отвалился в 7.0. И так далее — а всё потому, что Раджеш не в состоянии делать обобщения за пределами одного бага, который он чинит прямо сейчас.

Отбирая у Раджеша такой удобный инструмент для написания неправильных программ, мы заставляем его думать в более правильных терминах.
Конечно, мы всё ещё рискуем — ведь Раджеш может использовать проверку в стиле "версия равна или выше 6.2" взамен настоящей feature detection, просто потому, что он идиот, и не понимает, как правильно проверить наличие нужного ему компонента винды. Но мы удешевляем поддержку программ, т.к. теперь Раджешу труднее написать программу, которую придётся перекомпилировать каждые 12 месяцев.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[12]: Знаете ли вы, что...
От: . Великобритания  
Дата: 26.05.15 06:54
Оценка:
Здравствуйте, Sinclair, Вы писали:

S> Отбирая у Раджеша такой удобный инструмент для написания неправильных программ, мы заставляем его думать в более правильных терминах.

Так в каких правильных-то? Официально предлагаемые замены: IsWindows***OrGreater() или GetFileVersionInfo("kernel32.dll"). Был ещё какой-то 167 страничный документ, по одной из версий Windows, но Раджеши его читать не будут, просто заменят GetVersion на GetFileVersionInfo или скопипастят лесенку if(IsWindows..), дай бог без большего числа багов, и всё. Может я что-то не понимаю в правильности, но, мне кажется, в итоге код только усложнится, открыв более широкий простор для проблем, и навечно привязав код к останкам 32-бит.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[13]: Знаете ли вы, что...
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.05.15 07:19
Оценка:
Здравствуйте, ., Вы писали:
.>Так в каких правильных-то?
IsWindows***OrGreater().
Потому что Раджешу не нужна точная версия. Ему нужно всё, что новее, вот только он сравнение композитной версии написать правильно не может даже после многократного битья палкой.

.>Официально предлагаемые замены: IsWindows***OrGreater() или GetFileVersionInfo("kernel32.dll").

GetFileVersionInfo — это не для Раджешей, а для тех реальных джедаев, которые понимают всю сложность вопроса "какова точная версия винды".
.>Может я что-то не понимаю в правильности, но, мне кажется, в итоге код только усложнится, открыв более широкий простор для проблем, и навечно привязав код к останкам 32-бит.
Да, вы чего-то не понимаете. Вы игнорируете вопрос о цели написания кода, и сосредотачиваетесь на какой-то отдельной строчке. Раджешь не пишет одну строчку. Он пишет, скажем, инсталлятор для программы, написанной более компетентными чуваками. И ему надо в коде инсталлятора исполнять разные ветки в зависимости от окружения.
Написать этот код корректно, основываясь на GetVersionEx, достаточно трудно — даже для продвинутых Раджешей. И обнаружить проблему в таком коде достаточно трудно.

А отличить на peer review бредовый код от небредового кода на основе IsWindows***OrGreater() достаточно легко.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[14]: Знаете ли вы, что...
От: . Великобритания  
Дата: 26.05.15 09:39
Оценка:
Здравствуйте, Sinclair, Вы писали:


.>>Официально предлагаемые замены: IsWindows***OrGreater() или GetFileVersionInfo("kernel32.dll").

S>GetFileVersionInfo — это не для Раджешей, а для тех реальных джедаев, которые понимают всю сложность вопроса "какова точная версия винды".
Понятное дело, что из благих побуждений это, может, и было придумано только для джедаев, но, к сожалению, чтобы увидеть эту рекомендацию — достаточно кликнуть ссылку в MSDN, даже наличие Светового Меча не проверяют, не говоря уж о MCP Certificate. Поэтому будет куча раджешей, использующих этот подход как попало. А уж сколько можно багов наворотить кодируя вот это:
"To obtain the full version number for the operating system, call the GetFileVersionInfo function on one of the system DLLs, such as Kernel32.dll, then call VerQueryValue to obtain the \\StringFileInfo\\<lang><codepage>\\ProductVersion subblock of the file version information."
мне страшно подумать.

.>>Может я что-то не понимаю в правильности, но, мне кажется, в итоге код только усложнится, открыв более широкий простор для проблем, и навечно привязав код к останкам 32-бит.

S>Да, вы чего-то не понимаете. Вы игнорируете вопрос о цели написания кода, и сосредотачиваетесь на какой-то отдельной строчке. Раджешь не пишет одну строчку. Он пишет, скажем, инсталлятор для программы, написанной более компетентными чуваками. И ему надо в коде инсталлятора исполнять разные ветки в зависимости от окружения.
S>Написать этот код корректно, основываясь на GetVersionEx, достаточно трудно — даже для продвинутых Раджешей. И обнаружить проблему в таком коде достаточно трудно.
И чем IsWindows***OrGreater() лучше? Ведь сам говоришь, что должен быть feature detection, а не это. Заменили Г на более лёгкое в использовании Г — прогресс.

S>А отличить на peer review бредовый код от небредового кода на основе IsWindows***OrGreater() достаточно легко.

Как-то наивно... "легко"/"не легко". Ты просто исходишь из другого предположения, чем я. Но мы оба — предполагаем, так что твои выводы обноснованы на столько же, что и мои.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[15]: Знаете ли вы, что...
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.05.15 09:51
Оценка:
Здравствуйте, ., Вы писали:

.>Понятное дело, что из благих побуждений это, может, и было придумано только для джедаев, но, к сожалению, чтобы увидеть эту рекомендацию — достаточно кликнуть ссылку в MSDN, даже наличие Светового Меча не проверяют, не говоря уж о MCP Certificate. Поэтому будет куча раджешей, использующих этот подход как попало. А уж сколько можно багов наворотить кодируя вот это:

.>"To obtain the full version number for the operating system, call the GetFileVersionInfo function on one of the system DLLs, such as Kernel32.dll, then call VerQueryValue to obtain the \\StringFileInfo\\<lang><codepage>\\ProductVersion subblock of the file version information."
.>мне страшно подумать.
Ещё раз: чтобы наговнокодить зависимость от точной версии винды, нужно потратить значительное время и усилия. Готовой функции GetKernel32DllVersionEx() в API не предусмотрено.

.>И чем IsWindows***OrGreater() лучше?

Тем, что программа, написанная на его основе, продолжит работать и через год, и через три, без перекомпиляции.

.>Ведь сам говоришь, что должен быть feature detection, а не это. Заменили Г на более лёгкое в использовании Г — прогресс.

Заменили API на менее хрупкий. Отсутствие feature detection означает, что будут ложно-положительные срабатывания. Например, программа предполагает "о, раз версия больше 6, значит точно есть xxx", при этом xxx в версии 12 оказывается опциональным компонентом. Программа пытается обращаться к xxx и падает навзничь.
Такую проблему можно починить без перекомпиляции, просто написав в документации "пожалуйста поставьте компонент xxx перед запуском программы Раджеша".
Проблему с тем, что программа видит версию 7.0 и радостно пишет "я не буду работать, мне нужна версия 6.1 или новее" починить без перекомпиляции не получится.

.>Как-то наивно... "легко"/"не легко".

Моя "наивность" происходит из примерно 20 лет опыта разработки софта в коммерческих целях. В том числе и на мейнтенансе софта, написанного 10+ лет назад ограниченно-годными людьми.
Мотивация замены API в Microsoft видна невооружённым взглядом: они проанализировали доступную им codebase и обращения в саппорт; на основании чего решили изменить API вот так.
На всякий случай: MS — очень консервативная контора. По умолчанию они всегда выбирают "ничего не делать"; чтобы обосновать любые изменения, нужно набрать достаточно весомых аргументов. Особенно это касается breaking changes, вроде убирания функций из API.
А ваши представления о том, "как всё должно быть", продиктованы исключительно наивностью — в том смысле, что вы себе не представляете, сколько денег вбухано в написание кода, который лично вам кажется логичным выкинуть и переписать.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[16]: Знаете ли вы, что...
От: . Великобритания  
Дата: 26.05.15 17:35
Оценка:
Здравствуйте, Sinclair, Вы писали:

.>>"To obtain the full version number for the operating system, call the GetFileVersionInfo function on one of the system DLLs, such as Kernel32.dll, then call VerQueryValue to obtain the \\StringFileInfo\\<lang><codepage>\\ProductVersion subblock of the file version information."

.>>мне страшно подумать.
S>Ещё раз: чтобы наговнокодить зависимость от точной версии винды, нужно потратить значительное время и усилия. Готовой функции GetKernel32DllVersionEx() в API не предусмотрено.
Хех.. Я видел таких трудолюбивых индусокодеров...

.>>Ведь сам говоришь, что должен быть feature detection, а не это. Заменили Г на более лёгкое в использовании Г — прогресс.

S>Заменили API на менее хрупкий. Отсутствие feature detection означает, что будут ложно-положительные срабатывания. Например, программа предполагает "о, раз версия больше 6, значит точно есть xxx", при этом xxx в версии 12 оказывается опциональным компонентом. Программа пытается обращаться к xxx и падает навзничь.
S>Такую проблему можно починить без перекомпиляции, просто написав в документации "пожалуйста поставьте компонент xxx перед запуском программы Раджеша".
S>Проблему с тем, что программа видит версию 7.0 и радостно пишет "я не буду работать, мне нужна версия 6.1 или новее" починить без перекомпиляции не получится.
Логично. Да, согласен, лучше чем было.
Хотя, мне кажется, было бы удобнее и логичнее версию в виде одного числа возвращать. Например 7.2.1 представить как 70201. Что я упускаю? Вроде они так и хотели изначально сделать в GetVersion, но перепутали что-то... А потом вместо того, чтобы поставить на место, изобрели ещё одного монстрика GetVersionEx, и теперь ещё армия монстров IsWindows* и kernel32.dll.
Ещё как вариант — сделать стандартную правильную функцию сравнения двух версий.

.>>Как-то наивно... "легко"/"не легко".

S>Моя "наивность" происходит из примерно 20 лет опыта разработки софта в коммерческих целях. В том числе и на мейнтенансе софта, написанного 10+ лет назад ограниченно-годными людьми.
S>Мотивация замены API в Microsoft видна невооружённым взглядом: они проанализировали доступную им codebase и обращения в саппорт; на основании чего решили изменить API вот так.
S>На всякий случай: MS — очень консервативная контора. По умолчанию они всегда выбирают "ничего не делать"; чтобы обосновать любые изменения, нужно набрать достаточно весомых аргументов. Особенно это касается breaking changes, вроде убирания функций из API.
S>А ваши представления о том, "как всё должно быть", продиктованы исключительно наивностью — в том смысле, что вы себе не представляете, сколько денег вбухано в написание кода, который лично вам кажется логичным выкинуть и переписать.
Понимаю, теперь. Слава богу я сбежал из Windows-программинга.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: Знаете ли вы, что...
От: Alekzander  
Дата: 16.12.23 13:47
Оценка:
Здравствуйте, lxa, Вы писали:

lxa>lxa>Увы, программист, писавший ее код, слегка ошибся, и получилось так, что номера версии Windows поменялись местами: в старший байт попадал дополнительный номер, а в младший — основной.


Не ошибся, а сэкономил байт:

The 8086 instructions to compare the values in these registers are encoded as follows:

Instruction     Encoding
CMP AL, 03h     3C 03
CMP AH, 03h     80 FC 03


Since almost everyone will be comparing the major version, we should put the major version in the location that is most efficient to consume, and that would be the AL register. Putting the value there permits a shorter instruction encoding than if the value had been in the AH register.

Re: Знаете ли вы, что...
От: nikkit  
Дата: 16.12.23 14:05
Оценка:
Здравствуйте, qwertyuiop, Вы писали:

даже в начале 2к версию венды определять был еще тот гемор. подозреваю (с тех пор не было актуальным) наверняка хуже стало
Re[3]: Знаете ли вы, что...
От: scf  
Дата: 16.12.23 14:49
Оценка:
Здравствуйте, AlexRK, Вы писали:

ARK>Какая трогательная забота о Раджикумарах.


Если индусское приложение не запустится на новой версии Windows, пользователи назначат виноватым не Раджикумара, а глючную винду и лично Билла, хотя он давно на пенсии.
Re[2]: Знаете ли вы, что...
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 18.12.23 09:37
Оценка:
Здравствуйте, nikkit, Вы писали:

N>даже в начале 2к версию венды определять был еще тот гемор. подозреваю (с тех пор не было актуальным) наверняка хуже стало


Держите некропостера!

ЗЫ Не понял, а что вызывало проблему?
Маньяк Робокряк колесит по городу
Re[3]: Знаете ли вы, что...
От: nikkit  
Дата: 18.12.23 10:04
Оценка:
M>Держите некропостера!
это не я — это он https://rsdn.org/forum/humour/8652823.1
Автор: Alekzander
Дата: 16.12 16:47


M>ЗЫ Не понял, а что вызывало проблему?

да никаких проблем. лишний код просто и все.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.