Comment faire pour déterminer le chemin d’accès d’une Application Office

Résumé

Cet article comprend des exemples de code qui illustre comment vous pouvez déterminer par programme le chemin d’accès de l’installation d’une application Microsoft Office donnée le ProgID pour cette application.

Plus d'informations

Serveurs Automation ont un ProgID unique que vous utilisez habituellement pour automatiser ce serveur. La liste suivante fournit les ProgID pour les applications Office :

ApplicationProgID
Microsoft AccessAccess.Application
Microsoft ExcelExcel.Application
Microsoft OutlookOutlook.Application
Microsoft PowerPointPowerpoint.Application
Microsoft WordWord.Application
Microsoft FrontPageFrontPage.Application

Notez que le tableau ci-dessus fournit les ProgID indépendant de la version. Les applications ont également les ProgID dépendants de la version que vous pouvez utiliser avec l’exemple de code fourni dans cet article. Par exemple, Microsoft Excel possède un ProgID indépendant de la version « Excel.Application » et un ProgID dépendant de la version, telles que « Excel.Application.8 » et « Excel.Application.9 ».

Étant donné un ProgID pour un serveur out-of-process, vous pouvez obtenir son emplacement en examinant le Registre. Un serveur out-of-process a une clé dans le Registre :

HKEY_LOCAL_MACHINE\Software\Classes\PROGID\CLSID

qui fournit son CLSID unique (ou un ID de classe). CLSID puis qu’une clé de Registre :

HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx}\LocalServer32

où le chemin d’accès au serveur est spécifié. Pour illustrer ceci, si vous souhaitez déterminer le chemin d’accès de Microsoft Excel à l’aide du ProgID « Excel.Application », vous examinez cette clé dans le Registre :

HKEY_LOCAL_MACHINE\Software\Classes\Excel.Application\CLSID

et, en fonction de la version de Microsoft Excel est installée, vous trouverez que le CLSID Excel.Application est « {00020841-0000-0000-C000-000000000046} ». Ensuite, à l’aide de ce CLSID, vous examinez la clé de Registre suivante pour rechercher le chemin d’accès pour EXCEL. EXE :

HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{00020841-0000-0000-C000-000000000046}\LocalServer32

Tout ceci peut être effectué par programmation à l’aide de fonctions de l’API du Registre dans advapi32.dll.

Exemple de Code

  1. Démarrez un nouveau projet EXE standard dans Visual Basic. Form1 est créé par défaut.
  2. Ajoutez un contrôle TextBox et un contrôle CommandButton à Form1.
  3. Ajoutez le code suivant au module de Form1 :
    Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias _   "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
    ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) _
    As Long

    Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias _
    "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
    ByVal lpReserved As Long, lpType As Long, _
    ByVal lpData As String, lpcbData As Long) As Long
    'Note that if you declare the lpData parameter as String,
    'you must pass it ByVal.

    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

    Const REG_SZ As Long = 1
    Const KEY_ALL_ACCESS = &H3F
    Const HKEY_LOCAL_MACHINE = &H80000002

    Private Sub Command1_Click()
    Dim hKey As Long
    Dim RetVal As Long
    Dim sProgId As String
    Dim sCLSID As String
    Dim sPath As String

    sProgId = Text1.Text

    'First, get the clsid from the progid
    'from the registry key:
    'HKEY_LOCAL_MACHINE\Software\Classes\<PROGID>\CLSID
    RetVal = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\Classes\" & _
    sProgId & "\CLSID", 0&, KEY_ALL_ACCESS, hKey)
    If RetVal = 0 Then
    Dim n As Long
    RetVal = RegQueryValueEx(hKey, "", 0&, REG_SZ, "", n)
    sCLSID = Space(n)
    RetVal = RegQueryValueEx(hKey, "", 0&, REG_SZ, sCLSID, n)
    sCLSID = Left(sCLSID, n - 1) 'drop null-terminator
    RegCloseKey hKey
    End If

    'Now that we have the CLSID, locate the server path at
    'HKEY_LOCAL_MACHINE\Software\Classes\CLSID\
    ' {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx}\LocalServer32

    RetVal = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _
    "Software\Classes\CLSID\" & sCLSID & "\LocalServer32", 0&, _
    KEY_ALL_ACCESS, hKey)
    If RetVal = 0 Then
    RetVal = RegQueryValueEx(hKey, "", 0&, REG_SZ, "", n)
    sPath = Space(n)

    RetVal = RegQueryValueEx(hKey, "", 0&, REG_SZ, sPath, n)
    sPath = Left(sPath, n - 1)
    MsgBox sPath
    RegCloseKey hKey
    End If

    End Sub

  4. Appuyez sur la touche F5 pour exécuter le programme.
  5. Dans la zone de texte, tapez Excel.Application et cliquez sur le bouton de commande. Le chemin d’accès à Excel.exe apparaît dans un MessageBox.

Références

Pour plus d’informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft :
234788 comment trouver le chemin d’accès de l’Installation d’une Application de Office 2000
145679 l’utilisation de l’API du Registre pour enregistrer et récupérer des paramètres
Propriétés

ID d'article : 240794 - Dernière mise à jour : 26 janv. 2017 - Révision : 1

Commentaires