Partager via


Sécurité des actions personnalisées

Le programme d’installation exécute des actions personnalisées avec des privilèges utilisateur par défaut pour limiter l’accès des actions personnalisées au système. Le programme d’installation peut exécuter des actions personnalisées avec des privilèges élevés si une application managée est installée ou si la stratégie système a été spécifiée pour les privilèges élevés.

Vous devez utiliser la propriété MsiHiddenProperties et msidbCustomActionTypeHideTarget pour empêcher la journalisation des informations sensibles utilisées par l’action personnalisée. Pour plus d’informations sur msidbCustomActionTypeHideTarget consultez 'option cible masquée d’action personnalisée.

Effacez la propriété CustomActionData après sa définition pour vous assurer que les données sensibles ne sont plus disponibles. L’exemple de code ci-dessous est un extrait de code utilisé par une action personnalisée DLL immédiate qui configure les données à utiliser par une action personnalisée différée appelée « MyDeferredCA » :

#include <windows.h>
#include <Msiquery.h>
#pragma comment(lib, "msi.lib")

UINT __stdcall MyImmediateCA(MSIHANDLE hInstall)
{
    // set up information for deferred custom action called MyDeferredCA
    const TCHAR szValue[] = TEXT("data");
    UINT uiStat = ERROR_INSTALL_FAILURE;
    if (ERROR_SUCCESS == MsiSetProperty(hInstall, TEXT("MyDeferredCA"), szValue))
    {
        uiStat = MsiDoAction(hInstall, TEXT("MyDeferredCA"));

        // clear CustomActionData property
        if (ERROR_SUCCESS != MsiSetProperty(hInstall, TEXT("MyDeferredCA"), TEXT("")))
            return ERROR_INSTALL_FAILURE;
    }

    return (uiStat == ERROR_SUCCESS) ? uiStat : ERROR_INSTALL_FAILURE;    
}

Notez que seules actions personnalisées différées peuvent utiliser l’attribut msidbCustomActionTypeNoImpersonate. Pour plus d’informations, consultez Options d’exécution de l’action personnalisée In-Script.

Si le msidbCustomActionTypeNoImpersonate bit n’est pas défini pour une action personnalisée, le programme d’installation exécute l’action personnalisée avec des privilèges au niveau de l’utilisateur. Pour plus d’informations, consultez 'action personnalisée In-Script options d’exécution.

Si le msidbCustomActionTypeNoImpersonate bit est défini et qu’une application managée est installée avec l’autorisation administrateur, le programme d’installation peut exécuter l’action personnalisée avec des privilèges élevés. Toutefois, si un utilisateur tente d’installer l’application managée sans autorisation d’administrateur, le programme d’installation exécute l’application avec des privilèges de niveau utilisateur, que msidbCustomActionTypeNoImpersonate soit défini.

Notez qu’une action personnalisée peut s’exécuter avec des privilèges système même si le msidbCustomActionTypeNoImpersonate bit n’est pas défini. Cela se produit si un administrateur installe l’application pour tous les utilisateurs sur un serveur exécutant le service de rôle Terminal Server à l’aide de Windows 2000 et que l’action n’est pas marquée avec msidbCustomActionTypeTSAware. Une action personnalisée peut également s’exécuter avec des privilèges système si l’installation est appelée lorsqu’il n’existe aucun contexte utilisateur. Par exemple, s’il n’existe aucun utilisateur actuellement connecté lors d’une installation appelée par le déploiement d’applications Windows 2000.

Lorsque vous créez vos propres actions personnalisées, vous devez toujours créer l’action personnalisée à l’aide de méthodes sécurisées. Pour plus d’informations, consultez Instructions pour la sécurisation des actions personnalisées.