ICredentialProviderCredential2::GetUserSid method (credentialprovider.h)

Retrieves the security identifier (SID) of the user that is associated with this credential.


  LPWSTR *sid



The address of a pointer to a buffer that, when this method returns successfully, receives the user's SID.

Return value

If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.


The Logon UI will use the returned SID from this method to associate the credential tile with a user tile. To associate the credential with the "Other user" user tile in the Logon UI, this method should return S_FALSE and a null SID. The "Other user" tile is normally only valid when the PC is joined to a domain.


The following example shows a sample implementation of this method. It retrieves the user's SID that corresponds to the credential.

The _pszUserSid variable used here is assumed to be a private member of the class, defined outside of this method and set to the user's SID.

The resource pointed to by ppszSid will be freed by the logon UI, so it does not need to be freed here.

If the user's SID is not available, the method returns S_FALSE with a null SID, which associates the credential with an anonymous user tile. This will cause the tile to appear when the "Other user" tile is selected on a domain-joined PC.

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

    // _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;


Minimum supported client Windows 8 [desktop apps only]
Minimum supported server Windows Server 2012 [desktop apps only]
Target Platform Windows
Header credentialprovider.h

See also