Share via


Instructies: expliciete eigendomsrechten toevoegen

Belangrijk

Versies van de Microsoft Rights Management Service SDK die vóór maart 2020 zijn uitgebracht, zijn afgeschaft; toepassingen die eerdere versies gebruiken, moeten worden bijgewerkt om de release van maart 2020 te kunnen gebruiken. Zie de afschaffingsmelding voor meer informatie.

Er zijn geen verdere verbeteringen gepland voor de Microsoft Rights Management Service SDK. We raden u ten zeerste aan de Microsoft Information Protection SDK te gebruiken voor classificatie-, label- en beveiligingsservices.

Uw toepassing moet expliciet 'Eigenaar'-rechten toevoegen bij het maken van een nieuwe licentie met behulp van IpcCreateLicenseFromScratch.

Vereisten

Wanneer uw toepassing een licentie maakt met behulp van IpcCreateLicenseFromScratch, moet deze ook expliciet de eigenaar volledige rechten (machtigingen) toekennen.

Notitie

Het instellen van een gebruiker als 'eigenaar' met behulp van IpcSetLicenseProperty met de eigenschap IPC_LI_OWNER verleent de eigenaar geen volledige machtigingen.

De volgende voorbeeldcode bevat alleen de stappen voor het maken en toevoegen de specifieke rechten aan een bepaalde licentie.

Instructies

Stap 1: voorbeeldscenario 1

In dit voorbeeld worden de benodigde rechten toegevoegd aan een licentie die is gemaakt met IpcCreateLicenseFromScratch. Het voorbeeld toont het maken van rechten en het toewijzen hiervan aan de licentie via een lijst met rechten.

Aan deze gebruikers worden de volgende twee rechten toegewezen:

  • Leesmachtigingen worden toegewezen aan joe@contoso.com
  • Volledige machtigingen toegewezen aan mary_kay@contoso.com
// Create User Rights structure
IPC_USER_RIGHTS ownerRightForOwner = {0};

// Create rights
LPCWSTR rgwszOwnerRights[1] = {IPC_GENERIC_ALL};

// Assign values to members of Rights structure
ownerRightForOwner.User.dwType = IPC_USER_TYPE_IPC;
ownerRightForOwner.User.wszID = IPC_USER_ID_OWNER;
ownerRightForOwner.rgwszRights = rgwszOwnerRights;
ownerRightForOwner.cRights = 1;

// Create User Rights structure for Joe with Read permissions
IPC_USER_RIGHTS joeReadRight = {0};
LPCWSTR rgwszReadRights[1] = {IPC_GENERIC_READ};

// Assign values to members of Rights structure for Joe
joeReadRight.User.dwType = IPC_USER_TYPE_EMAIL;
joeReadRight.User.wszID = "joe@contoso.com";
joeReadRight.rgwszRights = rgwszReadRights;
joeReadRight.cRights = 1;

// Create User Rights structure for Mary Kay with Full permissions
IPC_USER_RIGHTS mary_kayFullRight = {0};
LPCWSTR rgwszFullRights[1] = {IPC_GENERIC_ALL};

// Assign values to members of Rights structure for Mary Kay
mary_kayFullRight.User.dwType = IPC_USER_TYPE_EMAIL;
mary_kayFullRight.User.wszID = L"mary_kay@contoso.com";
mary_kayFullRight.rgwszRights = rgwszFullRights;
mary_kayFullRight.cRights = 1;

// Create User Rights List and assign the above rights
size_t uNoOfUserRights = 3;
PIPC_USER_RIGHTS_LIST pUserRightsList = NULL;
pUserRightsList = reinterpret_cast<PIPC_USER_RIGHTS_LIST>
(new BYTE[ sizeof(IPC_USER_RIGHTS_LIST) + uNoOfUserRights * sizeof(IPC_USER_RIGHTS)]);

if(pUserRightsList == NULL)
{
  // Handle error
}

// Assign values to members of Rights List structure for Joe and Mary Kay
(*pUserRightsList).cbSize = sizeof(IPC_USER_RIGHTS_LIST);
(*pUserRightsList).cUserRights = uNoOfUserRights;
(*pUserRightsList).rgUserRights[0] = ownerRightForOwner;
(*pUserRightsList).rgUserRights[1] = joeReadRight;
(*pUserRightsList).rgUserRights[2] = mary_kayFullRight;

// Set the Rights List property on the license via its handle
// hLicense is a license handle created with IpcCreateLicenseFromScratch
hr = IpcSetLicenseProperty(hLicense, FALSE, IPC_LI_USER_RIGHTS_LIST, pUserRightsList);

if(FAILED(hr))
{
  // Handle the error
}