Как правильно установить члены структуры SECURITY_DESCRIPTOR?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как правильно установить члены структуры SECURITY_DESCRIPTOR?

Сообщение Anonymous »

Я попытался написать код, который достигает того, о чем я прошу, в соответствии с официальной документацией 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).
  • грязный код.


Подробнее здесь: https://stackoverflow.com/questions/798 ... descriptor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»