Keamanan Tindakan Kustom

Alat penginstal menjalankan tindakan kustom dengan hak istimewa pengguna secara default untuk membatasi akses tindakan kustom ke sistem. Alat penginstal dapat menjalankan tindakan kustom dengan hak istimewa yang ditingkatkan jika aplikasi terkelola sedang diinstal atau jika kebijakan sistem telah ditentukan untuk hak istimewa yang ditingkatkan.

Anda harus menggunakan properti MsiHiddenProperties dan msidbCustomActionTypeHideTarget untuk mencegah pengelogan informasi sensitif yang digunakan oleh tindakan kustom. Untuk informasi selengkapnya tentang msidbCustomActionTypeHideTarget lihat Opsi Target Tersembunyi Tindakan Kustom.

Kosongkan properti CustomActionData setelah mengaturnya untuk memastikan bahwa data sensitif tidak lagi tersedia. Contoh kode di bawah ini adalah cuplikan yang digunakan oleh tindakan kustom DLL langsung yang menyiapkan data untuk digunakan oleh tindakan kustom yang ditangguhkan yang disebut "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;    
}

Perhatikan bahwa hanya tindakan kustom eksekusi yang ditangguhkan yang dapat menggunakan atribut msidbCustomActionTypeNoImpersonate . Untuk informasi selengkapnya lihat Opsi Eksekusi In-Script Tindakan Kustom.

Jika bit msidbCustomActionTypeNoImpersonate tidak diatur untuk tindakan kustom, alat penginstal menjalankan tindakan kustom dengan hak istimewa tingkat pengguna. Untuk informasi selengkapnya, lihat Opsi Eksekusi In-Script Tindakan Kustom.

Jika bit msidbCustomActionTypeNoImpersonate diatur dan aplikasi terkelola sedang diinstal dengan izin administrator, penginstal dapat menjalankan tindakan kustom dengan hak istimewa yang ditinggikan. Namun, jika pengguna mencoba menginstal aplikasi terkelola tanpa izin administrator, alat penginstal menjalankan aplikasi dengan hak istimewa tingkat pengguna terlepas dari apakah msidbCustomActionTypeNoImpersonate diatur.

Perhatikan bahwa tindakan kustom dapat berjalan dengan hak istimewa sistem bahkan ketika bit msidbCustomActionTypeNoImpersonate tidak diatur. Ini terjadi jika administrator menginstal aplikasi untuk semua pengguna di server yang menjalankan layanan peran Terminal Server menggunakan Windows 2000 dan tindakan tidak ditandai dengan msidbCustomActionTypeTSAware. Tindakan kustom juga dapat berjalan dengan hak istimewa sistem jika penginstalan dipanggil ketika tidak ada konteks pengguna. Misalnya, jika saat ini tidak ada pengguna yang masuk selama penginstalan yang dipanggil oleh Penyebaran Aplikasi Windows 2000.

Saat membuat tindakan kustom Anda sendiri, Anda harus selalu menulis tindakan kustom menggunakan metode aman. Untuk informasi selengkapnya, lihat Panduan untuk Mengamankan Tindakan Kustom.