3

Existe-t-il un moyen de détecter quelle version d'Exchange Server est en cours d'exécution (2007 ou 2010) via C#?Détermination de la version du serveur Exchange sur le système à l'aide de C#

+0

J'aimerais avoir un échange pour tester, mais je parie que vous pouvez le faire en scannant le registre. Découvrez où Exchange stocke ses informations de version et recherchez-les. –

+0

Cette information ne serait-elle pas seulement disponible sur le serveur? –

Répondre

2

Il y a VBScript here qui obtient la version pour tous les serveurs Exchange dans le domaine en utilisant WMI et AD. Vous pouvez convertir cette logique aux classes .Net appropriées si ce n'est pas utilisable tel quel.

'**************************************************************************** 
' This script created by Chrissy LeMaire ([email protected]) 
' Website: http://netnerds.net/ 
' 
' This script finds all Exchange Servers in AD. Includes Exchange Version. 
' 
' Run this script with admin privs on any computer within a domain. 
' 
' This script has only been tested on Windows Server 2003 
' 
' NO WARRANTIES, USE THIS AT YOUR OWN RISK, etc. 
'***************************************************************************** 

Set objAdRootDSE = GetObject("LDAP://RootDSE") 
Set objRS = CreateObject("adodb.recordset") 

varConfigNC = objAdRootDSE.Get("configurationNamingContext") 

    strConnstring = "Provider=ADsDSOObject" 
    strSQL = "SELECT * FROM 'LDAP://" & varConfigNC & "' WHERE objectCategory='msExchExchangeServer'" 
    objRS.Open strSQL, strConnstring 
    Do until objRS.eof 
Set objServer = GetObject(objRS.Fields.Item(0)) 
    Call getExchangeInfo(objServer.CN) 
Set objServer = Nothing 
     objRS.movenext 
    Loop 
    objRS.close 

Set objRS = Nothing 
Set objAdRootDSE = Nothing 

Sub getExchangeInfo(strServerName) 
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!" & strServerName & "\\ROOT\MicrosoftExchangeV2") 
Set colItems = objWMIService.ExecQuery("Select * from Exchange_Server") 

For Each objItem in colItems 
MsgBox UCase(objItem.Name) & " (" & objItem.FQDN & ") is running Exchange " & objItem.ExchangeVersion 
Next 

Set colItems = Nothing 
Set objWMIService = Nothing 
End Sub