https://learn.microsoft.com/en-us/windo ... descriptor
У меня есть заголовочный файл с классом, который имеет один частный член (объект SECURITY_DESCRIPTOR) и два общедоступных метода, один для установки членов структуры объекта, а другой для возврата копии объекта.
Все выглядит нормально, пока я не вызываю GetLastError(), который возвращает код ошибки 1337, указывающий, что «структура идентификатора безопасности недействительна», что означает, что я, вероятно, неправильно использую AllocateAndInitializeSid().
Ниже приведен код:
Код: Выделить всё
#pragma once
class init
{
private:
SECURITY_DESCRIPTOR secObjInfo{}; // contains info such as, owner, group, Sacl, Dacl, control. (Important)
public:
void setSecurityDescriptor()
{
// SID structure stuff
SID_IDENTIFIER_AUTHORITY sia
{
SECURITY_NT_AUTHORITY
};
PSID si = nullptr; // this security identification object determines what level of authority we have.
BOOL sid = AllocateAndInitializeSid( // function to initialize our
&sia,
1,
SECURITY_WORLD_RID,
0,
0,
0,
0,
0,
0,
0,
&si
);
// end
// set control for (SECURITY_DESCRIPTOR)
DWORD setControl = SetSecurityDescriptorRMControl(
&secObjInfo,
NULL
);
// end
// set revision level and give default initialization to mostly everything else in the struct (SECURITY_DESCRIPTOR).
BOOL setRevision = InitializeSecurityDescriptor(
&secObjInfo,
SECURITY_DESCRIPTOR_REVISION
);
// end
// set owner of SECURITY_DESCRIPTOR
BOOL secDesOwner = SetSecurityDescriptorOwner(
&secObjInfo,
&si,
1
);
// end
// set group for SECURITY_DESCRIPTOR
BOOL secDesGroup = SetSecurityDescriptorGroup(
&secObjInfo,
&si,
1
);
// end
}
SECURITY_DESCRIPTOR getSecurityDescriptor()
{
return secObjInfo;
}
};
- дескриптор безопасности инициализируется неправильно (код ошибки 1338).
- грязный код.
Подробнее здесь: https://stackoverflow.com/questions/798 ... descriptor