Megosztás a következőn keresztül:


Egyéni művelet biztonsága

A telepítő alapértelmezés szerint felhasználói jogosultságokkal futtat egyéni műveleteket, hogy korlátozza az egyéni műveletek hozzáférését a rendszerhez. A telepítő emelt szintű jogosultságokkal futtathat egyéni műveleteket, ha egy felügyelt alkalmazás van telepítve, vagy ha a rendszerházirend emelt szintű jogosultságokhoz lett megadva.

Az MsiHiddenProperties tulajdonságot és msidbCustomActionTypeHideTarget kell használnia, hogy megakadályozza az egyéni művelet által használt bizalmas adatok naplózását. Az msidbCustomActionTypeHideTarget az egyéni művelet rejtett célbeállításának című cikkben talál további információt.

Törölje a CustomActionData tulajdonságot a beállítás után, hogy a bizalmas adatok már ne legyenek elérhetők. Az alábbi példakód egy olyan kódrészlet, amelyet egy azonnali DLL egyéni művelet használ, amely adatokat állít be a "MyDeferredCA" nevű késleltetett egyéni művelet általi használatra:

#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;    
}

Vegye figyelembe, hogy az msidbCustomActionTypeNoImpersonate attribútumot csak halasztott végrehajtási egyéni műveletek használhatja. További információ: Egyéni művelet In-Script Végrehajtási beállítások.

Ha a msidbCustomActionTypeNoImpersonate bit nincs beállítva egyéni művelethez, a telepítő felhasználói szintű jogosultságokkal futtatja az egyéni műveletet. További információ: Egyéni művelet In-Script Végrehajtási beállítások.

Ha a msidbCustomActionTypeNoImpersonate bit be van állítva, és egy felügyelt alkalmazás rendszergazdai engedéllyel van telepítve, a telepítő emelt szintű jogosultságokkal futtathatja az egyéni műveletet. Ha azonban egy felhasználó rendszergazdai engedély nélkül próbálja telepíteni a felügyelt alkalmazást, a telepítő felhasználói szintű jogosultságokkal futtatja az alkalmazást, függetlenül attól, hogy msidbCustomActionTypeNoImpersonate be van-e állítva.

Vegye figyelembe, hogy egy egyéni művelet akkor is futtathat rendszerjogosultságokkal, ha a msidbCustomActionTypeNoImpersonate bit nincs beállítva. Ez akkor fordul elő, ha egy rendszergazda telepíti az alkalmazást az összes felhasználó számára a Terminálkiszolgáló szerepkör-szolgáltatást futtató kiszolgálón a Windows 2000 használatával, és a művelet nincs megjelölve msidbCustomActionTypeTSAware. Az egyéni műveletek rendszerjogokkal is futtathatók, ha a telepítést akkor hívja meg a rendszer, ha nincs felhasználói környezet. Ha például jelenleg nincs bejelentkezett felhasználó a Windows 2000 alkalmazástelepítés által meghívott telepítés során.

Saját egyéni műveletek létrehozásakor mindig biztonságos módszerekkel kell létrehoznia az egyéni műveletet. További információ: Egyéni műveletek biztonságossá tételének irányelvei.