Я попытался написать код, который достигает того, о чем я прошу, в соответствии с официальной документацией Microsoft по этой структуре: 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).
Я попытался написать код, который достигает того, о чем я прошу, в соответствии с официальной документацией Microsoft по этой структуре: https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-security_descriptor У меня есть заголовочный файл с классом, который имеет один частный член (объект SECURITY_DESCRIPTOR) и два общедоступных метода, один для установки членов структуры объекта, а другой для возврата копии объекта. Все выглядит нормально, пока я не вызываю GetLastError(), который возвращает код ошибки 1337, указывающий, что «структура идентификатора безопасности недействительна», что означает, что я, вероятно, неправильно использую AllocateAndInitializeSid(). Ниже приведен код: [code]#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.