none
How can I programatically determine the Edition of Office a user is running? RRS feed

  • Question

  • We're developing an app that delivers services based on the Office version being run.

    WHAT I NEED TO KNOW:
    Is the user running "Professional", "Standard", "Student", etc.

    WHAT I'VE TRIED:
    I looked at the version properties of MSO.DLL.   I'm reasonably sure the information may be in the File or Product Version numbers.  I don't know how to interpret the information.

    I am running the "Standard" edition, but I need to know how to determine that programatically.

    Wednesday, October 31, 2012 2:50 PM

All replies

  • Hi TSRACT,

    Thanks for posting in the MSDN Forum.

     We're developing an app that delivers services based on the Office version being run.

    Would you please provide more details?

    As far as I know, that Office PIA doesn't recommend to use an server side: http://support.microsoft.com/kb/257757.

    And you can retrieve Office Install information form registry.

    Have a good day,

    Tom


    Tom Xu [MSFT]
    MSDN Community Support | Feedback to us

    Monday, November 5, 2012 1:59 AM
    Moderator
  • We have a client lib that gets compiled as part of a COM Add-In (I'm using COM/ATL/C++ to write this).

    The library collects information about the Microsoft Office environment on the users machine.

    Version, and build information for example.  It then relays this information back to a database residing on our server. 

    So, the code runs on the client machine and collects the information.

    Monday, November 5, 2012 2:06 AM
  • Hi TSRACT,

    It's based on my experience that your can retrieve the registry hiver to collection that information.

    Have a good day,

    Tom


    Tom Xu [MSFT]
    MSDN Community Support | Feedback to us

    Monday, November 5, 2012 7:44 AM
    Moderator
  • Can you give me a concrete example as to how to get tothe location in the registry.

    I did a search for mso.dll  I found several entries that pointed to it's location, but not one location that gave me version information.

    Could you show me where you find this information in YOUR registry?  I'm sure the paths may not end up being an exact match between your machine and mine, but given that I just performed a search and didn't find the information I'm sure I must be doing something wrong.

    If you're not certain and are only conjecturing, it's fine.  I know some win32 apis that can get this info for me.  It's just a lot more programming.


    • Edited by TSRACT Monday, November 5, 2012 7:54 PM typo
    Monday, November 5, 2012 7:53 PM
  • The location is different depending on Processor architecture and "bitness" of the office product installed. Which of the following combination applies to you (Pick one from each list and I will tell you exactly what to do).

    1. Office 32 Bit
    2. Office 64 Bit

    and

    • 32 Bit OS
    • 64 Bit OS

    Raw

    Tuesday, November 6, 2012 4:58 PM
  • Hi TSRACT,

    I think what Roge's side is very important for your issue. I will involve some experts into this issue to supplement the details of your request. There might be some time delay, thank for your patience.

    Have a good day,

    Tom


    Tom Xu [MSFT]
    MSDN Community Support | Feedback to us

    Wednesday, November 7, 2012 6:24 AM
    Moderator
  • To achieve this, you need Office of different editions to test:

    Microsoft Office Professional Plus 2010 corresponds to this registry key:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{90140000-0011-0000-1000-0000000FF1CE}

    valuename: DisplayName

    value: Microsoft Office Professional Plus 2010

    You can determine Office editions by testing existence of above key.


    Forrest Guo | MSDN Community Support | Feedback to manager

    Thursday, November 8, 2012 5:50 AM
    Moderator
  • Interesting.  I will start looking into this and get back to you

    Friday, November 9, 2012 9:06 PM
  • TSRACT, here is a comprehensive look at the registry that I hope will further move you close to the solution, base on my previous request.

    Let me know if you need sample code to display version number of Office installed.

    The registry is like the "secret box" of the computer: it contains the most detailed information about anything, yes anything from hardware to software to security.

    The registry in Windows OS is divided into 5 main sections called Hive Keys, as follow:
    HKEY_CLASSES_ROOT
    HKEY_CURRENT_USER
    HKEY_LOCAL_MACHINE
    Hardware
    Security accounts manager (SAM)
    Security
    Software
    System
    HKEY_USERS
    HKEY_CURRENT_CONFIG

    Under the HKEY_LOCAL_MACHINE, we have 5 subsections.
    The "Software" section is the one that interests us here bacause it contains information about any software installed on the computer and applies to all users.

    On a 64Bit operating system, when you install a 64Bit application, an entry gets created directly as a child to HKEY_LOCAL_MACHINE\Software, but if it is a 32Bit application, an entry gets created under a sub-key called HKEY_LOCAL_MACHINE\Software\Wow6432Node

    On a 32Bit Operating System, you can only install 32Bit Applications and a key gets created under HKEY_LOCAL_MACHINE\Software. There is no \Wow6432Node sub-key on 32Bit Operating System.

    Going back to Microsoft Office, the versions are as follow:
    Office 2000 -  9.0
    Office XP   - 10.0
    Office 2003 - 11.0
    Office 2007 - 12.0
    Office 2010 - 14.0

    The key that gets created if you installed the 32Bit version of Office on 32 bit OS ( or the 64Bit version on 64Bit OS) is:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\[Version]

    The key that gets created if you installed the 32Bit version of Office on 64Bit OS:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\[Version]

    Armed with that knowledge, you can now write code to check those values.

    Hope that helps, and don't hesitate to ask for the code to read registry keys.


    Raw

    Sunday, November 11, 2012 12:41 AM
  • My apologies to all.  We're in the middle of regression testing now, and have not kept up with this thread.

    I will actually be testing your suggestions today, and will provide feed back.

    Just out of curiousity.  I noticed that no one suggested trying to get the information from application itself (the .exe or .dll).  The versioning API's can be confusing, but I used to find them reliable in the past.  However, the registry is a lot easier to get to.

    Saturday, November 17, 2012 5:49 PM