Как программно проверить, установлена ​​ли функция сервера в Windows Server 2008? - PullRequest
7 голосов
/ 10 марта 2009

В частности, я работаю с приложением, которое работает на Server 2008 только в том случае, если установлена ​​функция «Desktop Experience», и я хотел бы, чтобы установщик этого приложения проверил его наличие.

Единственный способ, которым я в данный момент знаю, - это запустить ServerManagerCmd -query и проанализировать вывод; Я бы предпочел что-то более легкое (например, проверку ключа реестра).

Ответы [ 2 ]

8 голосов
/ 28 июля 2009

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

public static bool isServerFeatureInstalled(Win32_ServerFeature_ID id)
{
    bool idFound = false;
    ConnectionOptions connectionOptions = new ConnectionOptions();
    ManagementScope managementScope =
        new ManagementScope(
            @"\\localhost\root\cimv2", connectionOptions);

    ObjectQuery oQuery =
        new ObjectQuery("SELECT Id FROM Win32_ServerFeature");
    ManagementObjectSearcher oSearcher =
        new ManagementObjectSearcher(managementScope, oQuery);
    ManagementObjectCollection oReturnCollection = oSearcher.Get();

    foreach (ManagementObject oReturn in oReturnCollection)
    {
        if ((uint) (oReturn["ID"]) == (uint) id)
        {
            return true;
        }
    }
    return idFound;
}

// short list of names and values taken from MSDN. 
public enum Win32_ServerFeature_ID
{
    Application_Server = 1,
    Web_Server = 2,
    Media_Server = 3,
    Windows_Sharepoint_Services = 4,
    Fax_Server = 5,
    File_Services = 6,
    Print_Services = 7,
    Active_Directory_Federation_Services = 8,
    Active_Directory_Lightweight_Directory_Services = 9,
    Active_Directory_Domain_Services = 10,
    UDDI_Services = 11,
    DHCP_Server = 12,
    DNS_Server = 13,
    Network_Policy_and_Access_Services = 14,
    Certificate_Server = 16,
    Active_Directory_Rights_Management_Services = 17,
    Terminal_Services = 18,
    Windows_Deployment_Services = 19,
    Failover_Clustering = 33,
    Network_Load_Balancing = 34,
    Desktop_Experience = 35,
    DOTNET_Framework_30 = 36,
}
0 голосов
/ 27 марта 2012

На моем тестируемом сервере Windows 2008 x64 std, выполняющем эту команду (добавляет роль):

ServerManagerCmd.exe -install AS-AppServer-Foundation 

добавляет этот раздел реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppServer

Эта команда (удаляет роль):

ServerManagerCmd.exe -remove AS-AppServer-Foundation

удаляет ключ. Так что я думаю, что это достаточно хороший показатель. Это всего лишь результаты моего собственного исследования / эксперимента и не является официальным / поддерживаемым способом определения, настроена ли роль AppServer.

...