具体的には、「デスクトップ エクスペリエンス」機能がインストールされている場合にのみ Server 2008 で実行されるアプリケーションを使用しており、そのアプリケーションのインストーラーにそれが存在することを確認してもらいたいと考えています。
私が現在知っている唯一の方法はServerManagerCmd -query
、出力を実行して解析することです。もっと軽量なものを好むでしょう(レジストリキーのチェックなど)。
具体的には、「デスクトップ エクスペリエンス」機能がインストールされている場合にのみ Server 2008 で実行されるアプリケーションを使用しており、そのアプリケーションのインストーラーにそれが存在することを確認してもらいたいと考えています。
私が現在知っている唯一の方法はServerManagerCmd -query
、出力を実行して解析することです。もっと軽量なものを好むでしょう(レジストリキーのチェックなど)。
これは、実行時に実行するために使用するコードスニペットです。
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,
}
このコマンドを実行しているテスト用の 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 ロールが構成されているかどうかを検出する公式/サポートされている方法ではありません。