Sdílet prostřednictvím


Zabezpečení vlastních akcí

Instalační program spouští vlastní akce s uživatelskými oprávněními ve výchozím nastavení, aby omezil přístup vlastních akcí do systému. Instalační program může spouštět vlastní akce se zvýšenými oprávněními, pokud je nainstalovaná spravovaná aplikace nebo pokud jsou pro zvýšená oprávnění zadána zásady systému.

Měli byste použít vlastnost MsiHiddenProperties a msidbCustomActionTypeHideTarget zabránit protokolování citlivých informací používaných vlastní akcí. Další informace o msidbCustomActionTypeHideTarget naleznete v tématu Možnost skrytého cíle vlastní akce.

Po nastavení vymažte vlastnost CustomActionData, abyste měli jistotu, že citlivá data už nebudou dostupná. Ukázkový kód níže je fragment kódu používaný okamžitou vlastní akcí knihovny DLL, která nastavuje data pro použití odloženou vlastní akcí s názvem 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;    
}

Všimněte si, že atribut msidbCustomActionTypeNoImpersonate použít pouze vlastní akce odloženého spuštění. Další informace naleznete v tématu vlastní akce In-Script možnosti spuštění.

Pokud msidbCustomActionTypeNoImpersonate bit není nastaven pro vlastní akci, instalační program spustí vlastní akci s oprávněními na úrovni uživatele. Další informace naleznete v tématu vlastní akce In-Script možnosti spuštění.

Pokud je nastavená msidbCustomActionTypeNoImpersonate bit a spravovaná aplikace se instaluje s oprávněním správce, může instalační program spustit vlastní akci se zvýšenými oprávněními. Pokud se však uživatel pokusí nainstalovat spravovanou aplikaci bez oprávnění správce, instalační program spustí aplikaci s oprávněními na úrovni uživatele bez ohledu na to, zda je nastavena msidbCustomActionTypeNoImpersonate.

Mějte na paměti, že vlastní akce může běžet s oprávněními systému, i když není nastavena bit msidbCustomActionTypeNoImpersonate. K tomu dochází v případě, že správce nainstaluje aplikaci pro všechny uživatele na server se spuštěnou službou role Terminálový server pomocí systému Windows 2000 a akce není označena msidbCustomActionTypeTSAware. Vlastní akce se může spustit také s oprávněními systému, pokud se instalace vyvolá, pokud neexistuje kontext uživatele. Pokud například během instalace vyvolané nasazením aplikace systému Windows 2000 není aktuálně přihlášený uživatel.

Při vytváření vlastních akcí byste měli vlastní akci vždy vytvořit pomocí zabezpečených metod. Další informace naleznete v tématu Pokyny pro zabezpečení vlastních akcí.