Exemplarische Vorgehensweise: Hinzufügen expliziter BesitzerrechteHow-to: add explicit owner rights

In Ihrer Anwendung sollten explizit Berechtigungen vom Typ „Besitzer“ hinzugefügt werden, wenn eine Lizenz von Grund auf mit IpcCreateLicenseFromScratch neu erstellt wird.Your application should explicitly add "Owner" rights when creating a license from scratch using IpcCreateLicenseFromScratch.

VoraussetzungenPrerequisites

Wenn Ihre Anwendung ein Lizenzhandle mit IpcCreateLicenseFromScratch erstellt, muss sie dem Besitzer auch explizit einen Vollzugriff (Berechtigungen) gewähren.When your application is creating a license handle using IpcCreateLicenseFromScratch, it must also grant the owner full rights (permissions) explicitly.

Hinweis

Wenn ein Benutzer über IpcSetLicenseProperty mit der IPC_LI_OWNER-Eigenschaft als Besitzer (Owner) festgelegt wird, werden dem Besitzer damit alle Berechtigungen gewährt.Setting a user as "owner" using IpcSetLicenseProperty with the IPC_LI_OWNER property does not grant the owner full permissions.

In diesem Codebeispiel werden nur die Schritte gezeigt, die zum Erstellen und Hinzufügen bestimmter Rechte zu einer Lizenz erforderlich sind.The following example code only represents the steps involved in creating and adding the specific rights to a given license.

InstructionsInstructions

Schritt 1: BeispielszenarioStep 1: Example scenario

In diesem Beispiel werden einer Lizenz, die mit IpcCreateLicenseFromScratch erstellt wurde, die benötigten Rechte hinzugefügt.In this example, needed rights are added to a license created with IpcCreateLicenseFromScratch. Im Beispiel wird die Erstellung und Zuweisung der Rechte zur Lizenz über eine Liste mit Rechten veranschaulicht.The example shows the creation and assignment of the rights to the license through a rights list.

Den Benutzern werden die folgenden beiden Rechte hinzugefügt:The following two rights are added to these users:

  • joe@contoso.com zugewiesene LeseberechtigungenRead permissions assigned to joe@contoso.com
  • Der Mary zugewiesene vollständige Berechtigungen_kay@contoso.comFull permissions assigned to 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
}