Zabezpieczenia akcji niestandardowej
Instalator domyślnie uruchamia akcje niestandardowe z uprawnieniami użytkownika, aby ograniczyć dostęp do akcji niestandardowych do systemu. Instalator może uruchamiać akcje niestandardowe z podwyższonym poziomem uprawnień, jeśli jest zainstalowana aplikacja zarządzana lub czy dla podniesionych uprawnień określono zasady systemowe.
Należy użyć właściwości MsiHiddenProperties i msidbCustomActionTypeHideTarget, aby zapobiec rejestrowaniu poufnych informacji używanych przez akcję niestandardową. Aby uzyskać więcej informacji na temat msidbCustomActionTypeHideTarget zobacz opcja ukrytego obiektu docelowego akcji niestandardowej.
Wyczyść właściwość CustomActionData po ustawieniu jej, aby upewnić się, że poufne dane nie są już dostępne. Poniższy przykładowy kod to fragment kodu używany przez natychmiastową akcję niestandardową biblioteki DLL, która konfiguruje dane do użycia przez odroczonej akcji niestandardowej o nazwie "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;
}
Należy pamiętać, że tylko akcje niestandardowe wykonania odroczonego mogą używać atrybutu msidbCustomActionTypeNoImpersonate. Aby uzyskać więcej informacji, zobacz Opcje wykonywania akcji niestandardowej In-Script.
Jeśli msidbCustomActionTypeNoImpersonate bit nie jest ustawiony dla akcji niestandardowej, instalator uruchamia akcję niestandardową z uprawnieniami na poziomie użytkownika. Aby uzyskać więcej informacji, zobacz opcje wykonywania niestandardowego In-Script.
Jeśli ustawiono msidbCustomActionTypeNoImpersonate bit, a zarządzana aplikacja jest instalowana z uprawnieniami administratora, instalator może uruchomić akcję niestandardową z podwyższonym poziomem uprawnień. Jeśli jednak użytkownik próbuje zainstalować aplikację zarządzaną bez uprawnień administratora, instalator uruchamia aplikację z uprawnieniami na poziomie użytkownika niezależnie od tego, czy msidbCustomActionTypeNoImpersonate jest ustawiona.
Należy pamiętać, że akcja niestandardowa może być uruchamiana z uprawnieniami systemu, nawet jeśli msidbCustomActionTypeNoImpersonate bit nie jest ustawiony. Dzieje się tak, jeśli administrator instaluje aplikację dla wszystkich użytkowników na serwerze z uruchomioną usługą roli Serwer terminali przy użyciu systemu Windows 2000, a akcja nie jest oznaczona msidbCustomActionTypeTSAware. Akcja niestandardowa może być również uruchamiana z uprawnieniami systemu, jeśli instalacja jest wywoływana, gdy nie ma kontekstu użytkownika. Jeśli na przykład nie ma obecnie zalogowanego użytkownika podczas instalacji wywoływanej przez wdrożenie aplikacji systemu Windows 2000.
Podczas tworzenia własnych akcji niestandardowych zawsze należy utworzyć akcję niestandardową przy użyciu bezpiecznych metod. Aby uzyskać więcej informacji, zobacz Guidelines for Securing Custom Actions (Wytyczne dotyczące zabezpieczania akcji niestandardowych).