[New - Windows NT]
WinVerifyTrust功能对指定的主题执行指定的验证操作。该函数将查询传递给支持操作标识符的信任提供者(如果有的话)。
LONG WinVerifyTrust(
HWND 【HWND】, | //处理与用户进行交互的窗口 |
GUID *【ActionID】, | //指向信任提供者操作标识符的指针 |
LPVOID 【ActionData】 | //指向包含动作特定数据的缓冲区的指针 |
); |
参数
【HWND】
处理来电者的窗口。信任提供者可以使用此值来确定它是否可以与用户交互。然而,信任提供者通常使用来自用户的输入执行验证操作。
此参数可以是以下值之一。
值 | 含义 |
INVALID_HANDLE_VALUE | 没有互动用户。信任提供者在没有用户帮助的情况下执行验证操作。 |
零 | 信任提供者可以使用交互式桌面显示其用户界面。 |
一个有效的窗口句柄 | 信任提供者可以将除INVALID_HANDLE_VALUE或零之外的任何值视为可用于与用户交互的有效窗口句柄。 |
【ActionID】
指向GUID结构的指针,用于标识操作,并隐式指出支持操作标识符的信任提供程序。该值表示由【ActionData】参数标识的对象执行的验证操作的类型。
WinTrust服务旨在与由第三方实施的信任提供商合作。每个信任提供者都提供自己唯一的一组操作标识符。有关信任提供程序支持的操作标识符的信息,请参阅该信任提供程序的文档。
例如,Microsoft提供了可以建立从诸如因特网的公共网络下载的软件的可信赖性的软件发布者信任提供者。Software Publisher Trust Provider支持以下操作标识符。
值 | 描述 | |||||||||||||||||||||
WIN_SPUB_ACTION_TRUSTED_PUBLISHER | ||||||||||||||||||||||
【ActionData】参数是指向WIN_SPUB_TRUSTED_PUBLISHER_DATA结构的指针。 | ||||||||||||||||||||||
WIN_SPUB_ACTION_NT_ACTIVATE_IMAGE | ||||||||||||||||||||||
【ActionData】参数是指向WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT结构的指针。 | ||||||||||||||||||||||
WIN_SPUB_ACTION_PUBLISHED_SOFTWARE | ||||||||||||||||||||||
【ActionData】参数是指向WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT结构的指针。 |
【ActionData】
指向包含信任提供者处理指定操作标识符所需的信息的缓冲区。通常,缓冲区中的数据包括标识信任提供者必须评估的主题的信息。
数据的格式取决于操作标识符。有关特定操作标识符所需数据的信息,请参阅支持该操作的信任提供程序的文档。
返回值
如果信任提供者验证主题是否受指定操作的信任,则返回值为ERROR_SUCCESS。
否则,返回值是信任提供者返回的状态代码。例如,信任提供者可能会指出主体不受信任,或被信任,但有限制或警告。返回值可以是单个信任提供者的文档中描述的信任提供者特定的值,也可以是以下错误代码之一。
值 | 含义 |
TRUST_E_SUBJECT_NOT_TRUSTED | 主题未通过指定的验证操作。大多数信任提供者返回一个更详细的错误代码,描述失败的原因。 |
TRUST_E_PROVIDER_UNKNOWN | 信任提供者在此系统上无法识别。 |
TRUST_E_ACTION_UNKNOWN | 信任提供者不支持指定的操作。 |
TRUST_E_SUBJECT_FORM_UNKNOWN | 信任提供者不支持为主题指定的表单。 |
备注
WinVerifyTrust功能使应用程序能够调用信任提供程序来验证指定的主题是否符合指定验证操作的标准。【ActionID】参数标识验证操作,【ActionData】参数标识主题。信任提供者是在WinTrust注册的DLL。当您调用WinVerifyTrust时,WinTrust服务会将呼叫转发到已注册的信任提供者(如果有的话)支持指定的操作标识符。
例如,软件发行商信任提供程序可以验证可执行映像文件是否来自受信任的软件发行商,并且该文件自发布以来尚未被修改。在这种情况下,【ActionData】参数指定文件的名称和文件的类型,例如Microsoft Portable Executable映像文件或Java类文件。
每个信任提供商都支持它可以评估的一组特定的动作。每个动作都有一个全局唯一的标识符(GUID)来标识它。信任提供者可以支持任何数量的动作标识符,但是两个信任提供者不能支持相同的动作标识符。
也可以看看