Udostępnij za pośrednictwem


Instrukcje: dodawanie jawnych praw właściciela

Ważne

Wersje zestawu Microsoft Rights Management Service SDK wydane przed marcem 2020 r. są przestarzałe; w celu korzystania z wersji z marca 2020 r. należy zaktualizować aplikacje korzystające z wcześniejszych wersji. Aby uzyskać szczegółowe informacje, zobacz powiadomienie o wycofaniu.

Nie planuje się dalszych ulepszeń zestawu Microsoft Rights Management Service SDK. Zdecydowanie zalecamy wdrożenie zestawu SDK Microsoft Information Protection dla usług klasyfikacji, etykietowania i ochrony.

Aplikacja powinna jawnie dodać prawa "Właściciel" podczas tworzenia licencji od podstaw przy użyciu funkcji IpcCreateLicenseFromScratch.

Wymagania wstępne

Gdy aplikacja tworzy dojście licencji przy użyciu funkcji IpcCreateLicenseFromScratch, musi również jawnie przyznać pełne prawa (uprawnienia) właściciela.

Uwaga

Ustawienie użytkownika jako "właściciela" przy użyciu właściwości IpcSetLicenseProperty z właściwością IPC_LI_OWNER nie przyznaje właścicielowi pełnych uprawnień.

Ten przykładowy kod przedstawia tylko kroki związane z tworzeniem i dodawaniem określonych praw do danej licencji.

Instrukcje

Krok 1. Przykładowy scenariusz

W tym przykładzie potrzebne prawa są dodawane do licencji utworzonej przy użyciu funkcji IpcCreateLicenseFromScratch. W przykładzie pokazano tworzenie i przypisywanie praw do licencji za pomocą listy praw.

Następujące dwa uprawnienia są dodawane do tych użytkowników:

  • Uprawnienia Odczyt przypisane do joe@contoso.com
  • Uprawnienia pełne przypisane do 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
}