Freigeben über


Sicherheit für benutzerdefinierte Aktionen

Das Installationsprogramm führt standardmäßig benutzerdefinierte Aktionen mit Benutzerrechten aus, um den Zugriff auf benutzerdefinierte Aktionen auf das System zu beschränken. Das Installationsprogramm kann benutzerdefinierte Aktionen mit erhöhten Rechten ausführen, wenn eine verwaltete Anwendung installiert wird oder wenn die Systemrichtlinie für erhöhte Berechtigungen angegeben wurde.

Verwenden Sie die MsiHiddenProperties-Eigenschaft und msidbCustomActionTypeHideTarget-, um die Protokollierung vertraulicher Informationen zu verhindern, die von der benutzerdefinierten Aktion verwendet werden. Weitere Informationen zu msidbCustomActionTypeHideTarget finden Sie unter Benutzerdefinierten Option für ausgeblendete Aktion.

Löschen Sie die CustomActionData-Eigenschaft, nachdem Sie sie festgelegt haben, um sicherzustellen, dass vertrauliche Daten nicht mehr verfügbar sind. Beispielcode unten ist ein Codeausschnitt, der von einer unmittelbaren benutzerdefinierten DLL-Aktion verwendet wird, die Daten für die Verwendung durch eine verzögerte benutzerdefinierte Aktion namens "MyDeferredCA" festlegt:

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

Beachten Sie, dass nur benutzerdefinierte Aktionen für verzögerte Ausführung das attribut msidbCustomActionTypeNoImpersonate verwenden können. Weitere Informationen finden Sie unter Benutzerdefinierte Aktion In-Script Ausführungsoptionen.

Wenn die msidbCustomActionTypeNoImpersonate Bit nicht für eine benutzerdefinierte Aktion festgelegt ist, führt das Installationsprogramm die benutzerdefinierte Aktion mit Berechtigungen auf Benutzerebene aus. Weitere Informationen finden Sie unter Benutzerdefinierte Aktion In-Script Ausführungsoptionen.

Wenn die msidbCustomActionTypeNoImpersonate Bit festgelegt ist und eine verwaltete Anwendung mit Administratorberechtigung installiert wird, kann das Installationsprogramm die benutzerdefinierte Aktion mit erhöhten Rechten ausführen. Wenn ein Benutzer jedoch versucht, die verwaltete Anwendung ohne Administratorberechtigung zu installieren, führt das Installationsprogramm die Anwendung mit Berechtigungen auf Benutzerebene aus, unabhängig davon, ob msidbCustomActionTypeNoImpersonate festgelegt ist.

Beachten Sie, dass eine benutzerdefinierte Aktion möglicherweise mit Systemrechten ausgeführt wird, auch wenn das msidbCustomActionTypeNoImpersonate Bit nicht festgelegt ist. Dies tritt auf, wenn ein Administrator die Anwendung für alle Benutzer auf einem Server installiert, auf dem der Terminalserver-Rollendienst mit Windows 2000 ausgeführt wird und die Aktion nicht mit msidbCustomActionTypeTSAwaregekennzeichnet ist. Eine benutzerdefinierte Aktion kann auch mit Systemberechtigungen ausgeführt werden, wenn die Installation aufgerufen wird, wenn kein Benutzerkontext vorhanden ist. Wenn beispielsweise während einer Installation, die von der Windows 2000-Anwendungsbereitstellung aufgerufen wird, kein aktuell angemeldeter Benutzer vorhanden ist.

Beim Erstellen eigener benutzerdefinierter Aktionen sollten Sie die benutzerdefinierte Aktion immer mit sicheren Methoden erstellen. Weitere Informationen finden Sie unter Richtlinien zum Sichern von benutzerdefinierten Aktionen.