Nasıl yapılır: Açık sahip hakları eklemeHow-to: add explicit owner rights

Uygulamanız, IpcCreateLicenseFromScratch kullanarak sıfırdan bir lisans oluştururken "Sahip" haklarını açıkça eklenmelidir.Your application should explicitly add "Owner" rights when creating a license from scratch using IpcCreateLicenseFromScratch.

ÖnkoşullarPrerequisites

Uygulamanız IpcCreateLicenseFromScratch kullanarak bir lisans tanıtıcısı oluştururken aynı zamanda açıkça tam sahip haklarını (izinleri) da vermelidir.When your application is creating a license handle using IpcCreateLicenseFromScratch, it must also grant the owner full rights (permissions) explicitly.

Not

IpcSetLicenseProperty’yi IPC_LI_OWNER özelliği ile kullanarak bir kullanıcıyı “sahip” olarak ayarlamak sahibe tüm izinleri vermez.Setting a user as "owner" using IpcSetLicenseProperty with the IPC_LI_OWNER property does not grant the owner full permissions.

Aşağıdaki örnek kod, yalnızca belirli haklar oluşturarak bunları belirli bir lisansa ekleme adımlarını gösterir.The following example code only represents the steps involved in creating and adding the specific rights to a given license.

YönergelerInstructions

1. adım: Örnek senaryoStep 1: Example scenario

Bu örnekte, IpcCreateLicenseFromScratch ile oluşturulan bir lisansa gereken haklar eklenir.In this example, needed rights are added to a license created with IpcCreateLicenseFromScratch. Örnekte, lisansa bir haklar listesi kullanılarak hakların oluşturulması ve atanması görülmektedir.The example shows the creation and assignment of the rights to the license through a rights list.

Bu kullanıcılara aşağıdaki iki hak eklenir:The following two rights are added to these users:

  • joe@contoso.com için atanan okuma izinleriRead permissions assigned to joe@contoso.com
  • Mary_kay@contoso.com için atanan tam izinlerFull 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
    }