사용자 지정 작업 보안
설치 관리자는 시스템에 대한 사용자 지정 작업의 액세스를 제한하기 위해 기본적으로 사용자 권한으로 사용자 지정 작업을 실행합니다. 관리되는 애플리케이션이 설치 중이거나 상승된 권한에 대해 시스템 정책이 지정된 경우 설치 프로그램은 상승된 권한으로 사용자 지정 작업을 실행할 수 있습니다.
사용자 지정 작업에서 사용하는 중요한 정보의 로깅을 방지하려면 MsiHiddenProperties 속성 및 msidbCustomActionTypeHideTarget을 사용해야 합니다. msidbCustomActionTypeHideTarget에 대한 자세한 내용은 사용자 지정 작업 숨겨진 대상 옵션을 참조하세요.
중요한 데이터를 더 이상 사용할 수 없도록 설정한 후 CustomActionData 속성을 지웁니다. 아래 예제 코드는 "MyDeferredCA"라는 지연된 사용자 지정 작업에서 사용할 데이터를 설정하는 즉각적인 DLL 사용자 지정 작업에서 사용하는 코드 조각입니다.
#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;
}
지연된 실행 사용자 지정 작업만 msidbCustomActionTypeNoImpersonate 특성을 사용할 수 있습니다. 자세한 내용은 사용자 지정 작업 스크립트 내 실행 옵션을 참조하세요.
msidbCustomActionTypeNoImpersonate 비트가 사용자 지정 작업에 대해 설정되지 않은 경우 설치 관리자는 사용자 수준 권한으로 사용자 지정 작업을 실행합니다. 자세한 내용은 사용자 지정 작업 스크립트 내 실행 옵션을 참조하세요.
msidbCustomActionTypeNoImpersonate 비트가 설정되고 관리자 권한으로 관리되는 애플리케이션을 설치하는 경우 설치 관리자는 관리자 권한으로 사용자 지정 작업을 실행할 수 있습니다. 그러나 사용자가 관리자 권한 없이 관리되는 애플리케이션을 설치하려고 하면 설치 관리자는 msidbCustomActionTypeNoImpersonate가 설정되었는지 여부에 관계없이 사용자 수준 권한으로 애플리케이션을 실행합니다.
msidbCustomActionTypeNoImpersonate 비트가 설정되지 않은 경우에도 시스템 권한으로 사용자 지정 작업을 실행할 수 있습니다. 이는 관리자가 Windows 2000을 사용하여 터미널 서버 역할 서비스를 실행하는 서버에 모든 사용자에 대한 애플리케이션을 설치하고 작업이 msidbCustomActionTypeTSAware로 표시되지 않는 경우에 발생합니다. 사용자 컨텍스트가 없을 때 설치가 호출되는 경우 시스템 권한으로 사용자 지정 작업을 실행할 수도 있습니다. 예를 들어 Windows 2000 애플리케이션 배포에서 호출한 설치 중에 현재 로그온한 사용자가 없는 경우입니다.
고유한 사용자 지정 작업을 만들 때는 항상 보안 메서드를 사용하여 사용자 지정 작업을 작성해야 합니다. 자세한 내용은 사용자 지정 작업 보안 지침을 참조하세요.