ICredentialProviderCredential2::GetUserSid 方法 (credentialprovider.h)

检索与此凭据关联的用户的 SID (安全标识符) 。

语法

HRESULT GetUserSid(
  [out] LPWSTR *sid
);

参数

[out] sid

指向缓冲区的指针的地址,当此方法成功返回时,该缓冲区接收用户的 SID。

返回值

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

登录 UI 将使用此方法返回的 SID 将凭据磁贴与用户磁贴相关联。 若要将凭据与登录 UI 中的“其他用户”用户磁贴相关联,此方法应返回 S_FALSE 和 null SID。 “其他用户”磁贴通常仅在电脑加入域时有效。

示例

以下示例演示此方法的示例实现。 它检索与凭据对应的用户的 SID。

此处使用的 _pszUserSid 变量假定是 类的私有成员,在此方法外部定义并设置为用户的 SID。

ppszSid 指向的资源将由登录 UI 释放,因此无需在此处释放。

如果用户的 SID 不可用,该方法返回具有 null SID 的S_FALSE ,它将凭据与匿名用户磁贴相关联。 这将导致在已加入域的电脑上选择“其他用户”磁贴时显示该磁贴。


// Gets the SID of the user corresponding to the credential. 
HRESULT CSampleCredential::GetUserSid(__deref_out PWSTR *ppszSid) 
{
    *ppszSid = nullptr;
    HRESULT hr = E_UNEXPECTED;

    // _pszUserSid is a private member of CSampleCredential
    if (_pszUserSid != nullptr)
    {
        // ppszSid will be freed by Logon UI
        hr = SHStrDupW(_pszUserSid, ppszSid);
    }
    // Return S_FALSE with a null SID in ppszSid for the
    // credential to be associated with an anonymous user tile.
    else if (_fIsOtherUserTile)
    {
        hr = S_FALSE;
    }

    return hr;
}                     
                    

要求

要求
最低受支持的客户端 Windows 8 [仅限桌面应用]
最低受支持的服务器 Windows Server 2012 [仅限桌面应用]
目标平台 Windows
标头 credentialprovider.h

另请参阅

ICredentialProviderCredential2

ICredentialProviderUser::GetSid