Aracılığıyla paylaş


Özel Eylem Güvenliği

Yükleyici, özel eylemlerin sisteme erişimini sınırlamak için varsayılan olarak kullanıcı ayrıcalıklarıyla özel eylemler çalıştırır. Yönetilen bir uygulama yüklüyse veya sistem ilkesi yükseltilmiş ayrıcalıklar için belirtilmişse, yükleyici yükseltilmiş ayrıcalıklarla özel eylemler çalıştırabilir.

MsiHiddenProperties özelliğini ve özel eylem tarafından kullanılan hassas bilgilerin günlüğe kaydedilmesini önlemek için msidbCustomActionTypeHideTarget kullanmanız gerekir. msidbCustomActionTypeHideTarget hakkında daha fazla bilgi için bkz. Özel Eylem Gizli Hedef Seçeneği.

Hassas verilerin artık kullanılamadığından emin olmak için customactionData özelliğini ayarladıktan sonra temizleyin. Aşağıdaki örnek kod, "MyDeferredCA" adlı ertelenmiş bir özel eylem tarafından kullanılacak verileri ayarlayan hemen DLL özel eylemi tarafından kullanılan bir kod parçacığıdır:

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

Yalnızca ertelenen yürütme özel eylemlerimsidbCustomActionTypeNoImpersonate özniteliğini kullanabileceğini unutmayın. Daha fazla bilgi için bkz. Özel Eylem In-Script Yürütme Seçenekleri.

msidbCustomActionTypeNoImpersonate biti özel bir eylem için ayarlanmadıysa, yükleyici özel eylemi kullanıcı düzeyinde ayrıcalıklarla çalıştırır. Daha fazla bilgi için bkz. Özel Eylem In-Script Yürütme Seçenekleri.

msidbCustomActionTypeNoImpersonate biti ayarlanırsa ve yönetici izniyle yönetilen bir uygulama yüklenirse, yükleyici yükseltilmiş ayrıcalıklarla özel eylemi çalıştırabilir. Ancak, bir kullanıcı yönetilen uygulamayı yönetici izni olmadan yüklemeyi denerse yükleyici, msidbCustomActionTypeNoImpersonate ayarlanıp ayarlanmadığına bakılmaksızın uygulamayı kullanıcı düzeyinde ayrıcalıklarla çalıştırır.

msidbCustomActionTypeNoImpersonate biti ayarlanmadığında bile özel bir eylemin sistem ayrıcalıklarıyla çalışabileceğini unutmayın. Bu durum, yönetici uygulamayı Windows 2000 kullanarak Terminal Server rol hizmetini çalıştıran bir sunucudaki tüm kullanıcılar için yüklerse ve eylem msidbCustomActionTypeTSAwareile işaretlenmezse oluşur. Kullanıcı bağlamı olmadığında yükleme çağrılırsa özel bir eylem sistem ayrıcalıklarıyla da çalıştırılabilir. Örneğin, Windows 2000 Uygulama Dağıtımı tarafından çağrılan bir yükleme sırasında şu anda oturum açmış kullanıcı yoksa.

Kendi özel eylemlerinizi oluştururken her zaman güvenli yöntemleri kullanarak özel eylemi yazmanız gerekir. Daha fazla bilgi için bkz. Özel Eylemlerin Güvenliğini Sağlama yönergeleri.