Útmutató: Explicit tulajdonosi jogosultságok hozzáadása
Fontos
A Microsoft Rights Management Service SDK 2020 márciusa előtt kiadott verziói elavultak; a korábbi verziókat használó alkalmazásokat frissíteni kell a 2020. márciusi kiadás használatához. További részletekért tekintse meg az elavulással kapcsolatos közleményt.
A Microsoft Rights Management Service SDK-hoz nem tervezünk további fejlesztéseket. Határozottan javasoljuk, hogy a besorolási, címkézési és védelmi szolgáltatásokhoz használja a Microsoft-információvédelem SDK-t.
Az alkalmazásnak explicit módon hozzá kell adnia a "Tulajdonos" jogosultságokat, amikor teljesen új licencet hoz létre az IpcCreateLicenseFromScratch használatával.
Előfeltételek
Ha az alkalmazás az IpcCreateLicenseFromScratch függvénnyel hoz létre licencleírót, explicit módon teljes körű engedélyeket is biztosítania kell a tulajdonosnak.
Megjegyzés
Ha a felhasználót "tulajdonosként" állítja be az IpcSetLicenseProperty használatával a IPC_LI_OWNER tulajdonsággal, az nem ad teljes körű engedélyt a tulajdonosnak.
A következő kódpélda csak a megfelelő jogosultságok létrehozásának és felvételének lépéseit mutatja be egy adott licenchez.
Utasítások
1. lépés: Példa
Ebben a példában a szükséges jogosultságokat az IpcCreateLicenseFromScratch függvénnyel létrehozott licenchez rendeljük hozzá. A példa egy jogosultságlistán keresztül mutatja be a jogosultságok létrehozását és licenchez rendelését.
Ezekhez a felhasználókhoz a következő két jogosultság lesz hozzárendelve:
- Olvasási engedélyek hozzárendelve joe@contoso.com-hoz
- Teljes engedélyek hozzárendelve 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
}