Sécurité des actions personnalisées
Le programme d’installation exécute des actions personnalisées avec des privilèges d’utilisateur par défaut afin de 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 en cours d’installation ou si la stratégie système a été spécifiée pour des 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 des actions personnalisées.
Désactivez la propriété CustomActionData après l’avoir définie pour s’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 des données pour une utilisation 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 les actions personnalisées d’exécution différée peuvent utiliser l’attribut msidbCustomActionTypeNoImpersonate . Pour plus d’informations, consultez action personnalisée In-Script options d’exécution.
Si le bit msidbCustomActionTypeNoImpersonate 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 bit msidbCustomActionTypeNoImpersonate est défini et qu’une application managée est en cours d’installation 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 géré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 ou non.
Notez qu’une action personnalisée peut s’exécuter avec des privilèges système même si le bit msidbCustomActionTypeNoImpersonate 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 en l’absence de contexte utilisateur. par exemple, s’il n’y a pas d’utilisateur actuellement connecté pendant une installation appelée par Windows déploiement d’Application 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.