Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Как определить версию Windows


Автор: erm0l0v 2.7.2012, 11:16
Доброго времени суток.

В моей задаче требуется определить версию Windows а так же редакцию ОС(Home Basic, Home Premium и т.д.)

По поводу определения версии Windows вопросов никаких, в интернете полно решений, с помощью которых это можно сделать. А вот что на счет редакции ОС? Есть у кого идеи?

Автор: Fortnox 2.7.2012, 15:11
Реестр использовать можно?

Добавлено через 9 минут и 14 секунд
В догонку. при помощи P/Invoke.

Значения типов редакции в файле WinNT.h (из состава WinSDK). В текущем случае из 7.0 SDK.

Код

public enum ProductType
    {
        PRODUCT_UNDEFINED = 0x00000000,
        PRODUCT_ULTIMATE = 0x00000001,
        PRODUCT_HOME_BASIC = 0x00000002,
        PRODUCT_HOME_PREMIUM = 0x00000003,
        PRODUCT_ENTERPRISE = 0x00000004,
        PRODUCT_HOME_BASIC_N = 0x00000005,
        PRODUCT_BUSINESS = 0x00000006,
        PRODUCT_STANDARD_SERVER = 0x00000007,
        PRODUCT_DATACENTER_SERVER = 0x00000008,
        PRODUCT_SMALLBUSINESS_SERVER = 0x00000009,
        PRODUCT_ENTERPRISE_SERVER = 0x0000000A,
        PRODUCT_STARTER = 0x0000000B,
        PRODUCT_DATACENTER_SERVER_CORE = 0x0000000C,
        PRODUCT_STANDARD_SERVER_CORE = 0x0000000D,
        PRODUCT_ENTERPRISE_SERVER_CORE = 0x0000000E,
        PRODUCT_ENTERPRISE_SERVER_IA64 = 0x0000000F,
        PRODUCT_BUSINESS_N = 0x00000010,
        PRODUCT_WEB_SERVER = 0x00000011,
        PRODUCT_CLUSTER_SERVER = 0x00000012,
        PRODUCT_HOME_SERVER = 0x00000013,
        PRODUCT_STORAGE_EXPRESS_SERVER = 0x00000014,
        PRODUCT_STORAGE_STANDARD_SERVER = 0x00000015,
        PRODUCT_STORAGE_WORKGROUP_SERVER = 0x00000016,
        PRODUCT_STORAGE_ENTERPRISE_SERVER = 0x00000017,
        PRODUCT_SERVER_FOR_SMALLBUSINESS = 0x00000018,
        PRODUCT_SMALLBUSINESS_SERVER_PREMIUM = 0x00000019
    }

[DllImport("kernel32.dll", SetLastError = false)]
        static extern bool GetProductInfo(
             int dwOSMajorVersion,
             int dwOSMinorVersion,
             int dwSpMajorVersion,
             int dwSpMinorVersion,
             out ProductType pdwReturnedProductType);

Что делать с этим, думаю, должно быть ясно.

Автор: erm0l0v 2.7.2012, 16:53
Fortnox, Спасибо.

Но я уже наткнулся наhttp://msdn.microsoft.com/en-us/library/windows/desktop/ms724429(v=vs.85).aspx в msdn по этому поводу. Там тоже используется GetProductInfo.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)