Безопасность пользовательских действий
Установщик выполняет пользовательские действия с привилегиями пользователя по умолчанию, чтобы ограничить доступ пользовательских действий к системе. Установщик может выполнять пользовательские действия с повышенными привилегиями, если установлено управляемое приложение или если системная политика была указана для повышенных привилегий.
Необходимо использовать свойство MsiHiddenProperties и msidbCustomActionTypeHideTarget, чтобы предотвратить ведение журнала конфиденциальной информации, используемой пользовательским действием. Дополнительные сведения о msidbCustomActionTypeHideTarget см. в параметр скрытого целевого объекта пользовательского действия.
Снимите свойство CustomActionData после настройки, чтобы убедиться, что конфиденциальные данные больше недоступны. Пример кода ниже — фрагмент кода, используемый немедленным пользовательским действием DLL, который настраивает данные для использования отложенным пользовательским действием с именем 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;
}
Обратите внимание, что с помощью атрибута CustomActionActionTypeNoImpersonate можно использовать только отложенные пользовательские действия выполнения. Дополнительные сведения см. в настраиваемых In-Script параметров выполнения.
Если msidbCustomActionTypeNoImpersonate бит не задан для пользовательского действия, установщик запускает настраиваемое действие с правами пользователя. Дополнительные сведения см. в разделе Настраиваемые действия In-Script параметры выполнения.
Если установлен msidbCustomActionTypeNoImpersonate бит, а управляемое приложение устанавливается с разрешением администратора, установщик может запустить настраиваемое действие с повышенными привилегиями. Однако если пользователь пытается установить управляемое приложение без разрешения администратора, установщик запускает приложение с привилегиями уровня пользователя независимо от того, задано ли msidbCustomActionTypeNoImpersonate.
Обратите внимание, что настраиваемое действие может выполняться с правами системы, даже если msidbCustomActionTypeNoImpersonate бит не задан. Это происходит, если администратор устанавливает приложение для всех пользователей на сервере, на котором запущена служба роли сервера терминалов с помощью Windows 2000, и действие не отмечено msidbCustomActionTypeTSAware. Настраиваемое действие также может выполняться с правами системы, если установка вызывается, если контекст пользователя отсутствует. Например, если во время установки, вызываемой развертыванием приложений Windows 2000, вошедшего в систему, нет вошедшего в систему пользователя.
При создании собственных пользовательских действий всегда следует создавать настраиваемые действия с помощью безопасных методов. Дополнительные сведения см. в руководства по защите пользовательских действий.