Is there a way to detect which version of Exchange Server is running (2007 or 2010) via c#?
Asked
Active
Viewed 1,217 times
3

John Saunders
- 160,644
- 26
- 247
- 397

RPS
- 1,401
- 8
- 19
- 32
-
I wish I had exchange to test, but I bet you can do this by scanning the registry. Find out where Exchange stores its version info and just look for it. – P.Brian.Mackey Nov 16 '10 at 18:37
-
Wouldn't this information only be available on the server? – John Saunders Nov 16 '10 at 19:36
2 Answers
2
There is VBScript here that gets the version for all Exchange Servers in the domain using WMI and AD. You could convert this logic to the appropriate .Net classes if this is not usable as is.
'****************************************************************************
' This script created by Chrissy LeMaire (clemaire@gmail.com)
' 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

Steve Townsend
- 53,498
- 9
- 91
- 140