Anvisningar: Lägga till explicita ägarrättigheterHow-to: add explicit owner rights

Ditt program bör uttryckligen lägga till ”ägarrättigheter” när en licens skapas från grunden med IpcCreateLicenseFromScratch.Your application should explicitly add "Owner" rights when creating a license from scratch using IpcCreateLicenseFromScratch.

FörutsättningarPrerequisites

När programmet skapar en licensreferens med IpcCreateLicenseFromScratch måste det även uttryckligen bevilja fullständiga rättigheter (behörigheter) till ägaren.When your application is creating a license handle using IpcCreateLicenseFromScratch, it must also grant the owner full rights (permissions) explicitly.

Anteckning

Om du anger en användare som "ägare" med hjälp av IpcSetLicenseProperty med egenskapen IPC_LI_OWNER så beviljas inte ägaren fullständig behörighet.Setting a user as "owner" using IpcSetLicenseProperty with the IPC_LI_OWNER property does not grant the owner full permissions.

Följande kodexempl visar endast stegen för att skapa och lägga till specifika rättigheter till en viss licens.The following example code only represents the steps involved in creating and adding the specific rights to a given license.

InstruktionerInstructions

Steg 1: ExempelscenarioStep 1: Example scenario

I det här exemplet läggs nödvändiga rättigheter till i en licens som skapats med IpcCreateLicenseFromScratch.In this example, needed rights are added to a license created with IpcCreateLicenseFromScratch. Exemplet visar hur rättigheterna skapas och tilldelas till licensen via en rättighetslista.The example shows the creation and assignment of the rights to the license through a rights list.

Följande två rättigheter läggs till för dessa användare:The following two rights are added to these users:

  • Läsbehörighet tilldelas till joe@contoso.comRead permissions assigned to joe@contoso.com
  • Fullständiga behörigheter tilldelade till Mary_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
}