рд╣рдорд╛рд░реА рдЯреАрдо рддреНрд╡рд░рд┐рдд рдФрд░ рдкреНрд░рднрд╛рд╡реА рдЧреНрд░рд╛рд╣рдХ рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрд░реЛрдз рдХреЗрд╡рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рд╕реНрд╡рдпрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВ рдФрд░ рд╡реЗ рдЕрдХреНрд╕рд░ рдЯреНрд░рд┐рдХреА рдкреНрд░рд╢реНрди рдкреВрдЫрддреЗ рд╣реИрдВред рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдЭреВрдареЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣рд╛рд▓ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕реА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ред
рд╣рдо рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░рддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдХреНрд╕рд░ рдмрдЧ рд╕реЗ рд╕рд╣реА рдХреЛрдб рдмрддрд╛рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реЛрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐
10 рдореЗрдВ рд╕реЗ 9 рдЪреЗрддрд╛рд╡рдиреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреАрдбрд╝реЗ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░реЗрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдПрдХ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╣рдо рдХрднреА рднреА рдЕрдкрдиреЗ рдирд┐рджрд╛рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рд▓рдбрд╝рдирд╛ рдмрдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдХреБрдЫ рдЬрд╝рдмрд░рджрд╕реНрдд рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣рдорд╛рд░реА рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдкрдХрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ; рджреВрд╕рд░реЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдФрд░ рдореБрдлреНрдд рд╕рдВрд╕реНрдХрд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдИрдореЗрд▓ рднреЗрдЬрд╛ рд╣реИ:
рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реВрдЪрдХ рд╣рдореЗрд╢рд╛ рд╢реВрдиреНрдп рд╣реЛрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдЗрд╕рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдЬреАрдм рдФрд░ рдЕрд╕реНрдерд┐рд░ рд╣реИ: рдХрднреА-рдХрднреА рдпрд╣ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдЙрд╕ рдЭреВрдареЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ:#include <windows.h> #include <aclapi.h> #include <tchar.h> int main() { PACL pDACL = NULL; PSECURITY_DESCRIPTOR pSD = NULL; ::GetNamedSecurityInfo(_T("ObjectName"), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &pDACL, NULL, &pSD); auto test = pDACL == NULL; // V547 Expression 'pDACL == 0' is always true. return 0; }
рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рддрд░рд╣ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдХреИрд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВред
GetNamedSecurityInfo рдлрд╝рдВрдХреНрд╢рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЪрд░
pDACL рдХреЗ рдорд╛рди рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд░рд▓ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЧрдпрд╛? рдФрд░ рд╣рд░ рд╕рддреНрд░ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдХреНрдпреЛрдВ рдЬрд╛рд░реА рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ? рд╢рд╛рдпрдж рдпрд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ, рдХрд╣рддреЗ рд╣реИрдВ, рдПрдХ uninitialized рдЪрд░?
рдХрд╛рд╢ ... рдПрдХ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЖрд╕рд╛рди рдХрд╛рдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдирд╛ рдореЗрд░реА рдЕрдкрдиреА рдкрд╕рдВрдж рдереАред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдкрдиреА рдЖрд╕реНрддреАрди рдЙрддрд╛рд░реА рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░ рдЧрдпрд╛ред
рдореИрдВрдиреЗ
GetNamedSecurityInfo рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдХреЙрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ
pDACL рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд
рдХрд░рддреА рд╣реИред рдпрд╣рд╛рдБ 6 рд╡реЗрдВ рддрд░реНрдХ рдХрд╛ рд╡рд░реНрдгрди рд╣реИ:
ppDacl
рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдЬреЛ рд▓реМрдЯрд╛рдП рдЧрдП рд╕реБрд░рдХреНрд╖рд╛ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдпрд╛ NULL рдореЗрдВ DACL рдХреЛ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рд╕реБрд░рдХреНрд╖рд╛ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдореЗрдВ рдХреЛрдИ DACL рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк DACL_SECURITY_INFORMATION рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓реМрдЯрд╛ рд╣реБрдЖ рд╕реВрдЪрдХ рдорд╛рдиреНрдп рд╣реИред рд╕рд╛рде рд╣реА, рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ NULL рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ DACL рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
|
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдЪреЗрддрд╛рд╡рдиреА рдЙрддреНрдкрдиреНрди рдХрд┐рдП рдмрд┐рдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕реЗ рд╕рд░рд▓ рдХреЛрдб рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрд╕ рд╕рдордп, рдореЗрд░рд╛ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореБрдЭреЗ рдмрддрд╛ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдорд╛рдорд▓рд╛ рдПрдХ рддреБрдЪреНрдЫ рдирд╣реАрдВ рдерд╛ рдФрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд▓рдЧрдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ред
рдореЗрд░реА рдЧрд▓рддрдлрд╣рдореА рдХреА рдкреБрд╖реНрдЯрд┐ рддрдм рд╣реБрдИ рдЬрдм рдореИрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рдЕрд▓реНрдлрд╛ рд╕рдВрд╕реНрдХрд░рдг рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдпрд╛ рддреЛ рдЭреВрдареЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ред рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдореИрдВрдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреБрдк рд░рд╣реЗред
рдореИрдВрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдореБрдЭреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди
рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕ рдЖрдИ-рдлрд╛рдЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ред рдЙрд╕рдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛, рдФрд░ рдореИрдВ рдЕрдкрдиреА рдЬрд╛рдВрдЪ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рд╛ред
рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рдиреЗ рдЙрд╕ рдлрд╛рдЗрд▓ рдкрд░ рдПрдХрджрдо рд╕реЗ рдЧрд▓рдд рдкреЙрдЬрд┐рдЯрд┐рд╡ рдкреНрд░реЛрдбреНрдпреВрд╕ рдХрд┐рдпрд╛ред рдПрдХ рддрд░рдл, рдпрд╣ рдЕрдЪреНрдЫрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рджреВрд╕рд░реА рдУрд░, рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЕрд╣рд╕рд╛рд╕ рдерд╛ рдХрд┐ рдЗрд╕ рдЪрд┐рддреНрд░ рдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдпрд╣ рднрд╛рд╡рдирд╛ рдХреНрдпреЛрдВ? рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдФрд░
V547 рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдХрд╛рд░реНрдп рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣рд╛рдБ рдмрд╕ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХрднреА рднреА!
рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдХреБрдЫ рдЪрд╛рдп рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
GetNamedSecurityInfo рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдирд┐рдореНрди рдХреЛрдб рдореЗрдВ рдлреИрд▓рддрд╛ рд╣реИ:
::GetNamedSecurityInfoW(L"ObjectName", SE_FILE_OBJECT, (0x00000004L), 0, 0, &pDACL, 0, &pSD);
рдпрд╣ рдХреЛрдб рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдЖрдИ-рдлрд╛рдЗрд▓ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреА рдЧрдИ рдлрд╛рдЗрд▓ рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдорд╛рди рд╣реИред
рд╣рдореНрдо ... рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХреЛ рджреЗрдЦреЗрдВред рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрдпрд╛ рдкрд╛рдпрд╛ рд╣реИ:
__declspec(dllimport) DWORD __stdcall GetNamedSecurityInfoW( LPCWSTR pObjectName, SE_OBJECT_TYPE ObjectType, SECURITY_INFORMATION SecurityInfo, PSID * ppsidOwner, PSID * ppsidGroup, PACL * ppDacl, PACL * ppSacl, PSECURITY_DESCRIPTOR * ppSecurityDescriptor );
рд╕рдм рддрд╛рд░реНрдХрд┐рдХ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдХреБрдЫ рднреА рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред
рдлрд┐рд░ рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ ...
рдореИрдВ рдЬреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ рд╡рд╣ рд╣рдорд╛рд░реА рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ:
__declspec(dllimport) DWORD __stdcall GetNamedSecurityInfoW( LPCWSTR pObjectName, SE_OBJECT_TYPE ObjectType, SECURITY_INFORMATION SecurityInfo, const PSID * ppsidOwner, const PSID * ppsidGroup, const PACL * ppDacl, const PACL * ppSacl, PSECURITY_DESCRIPTOR * ppSecurityDescriptor );
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдФрдкрдЪрд╛рд░рд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░
pp Dacl рдХреЛ
const рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
WAT? WTF? WAT? WTF?рд╡рд╣ рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ?
рдареАрдХ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдирд┐рд░реНрджреЛрд╖ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕рдХреЗ рд╕рдореНрдорд╛рди рдХреА рд░рдХреНрд╖рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рддрд░реНрдХ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд╕реНрддреБ рдХрд╛ рд╕реВрдЪрдХ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ,
GetNamedSecurityInfoW рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ:
PACL pDACL = NULL; PSECURITY_DESCRIPTOR pSD = NULL; ::GetNamedSecurityInfo(_T("ObjectName"), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &pDACL, NULL, &pSD); auto test = pDACL == NULL;
pDACL рд╡реИрд░рд┐рдПрдмрд▓ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╣рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ (рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'pDACL == 0' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИред)
рдареАрдХ рд╣реИ, рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХреНрдпрд╛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреА рд╣реИред рд╣рдо рдЕрднреА рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рд╡рд╣
рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ рдХреАрд╡рд░реНрдб рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рд╡рд╣рд╛рдБ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛!
рдЦреИрд░, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрдиреБрдорд╛рди рд╣реИ, рдФрд░ рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХреНрдпрд╛ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЧрд▓рдд рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ aclapi.h рдХрд╛ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдореИрдВрдиреЗ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд▓рд┐рдВрдХ рднреА рдЪрд▓рд╛рдП рд╣реИрдВ:
рдЗрд╕рд▓рд┐рдП, рдПрдХ рдмрд╛рд░, aclapi.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рд╡рд░рдг рдерд╛ (6.0.6002.18005-Windows DV):
WINADVAPI DWORD WINAPI GetNamedSecurityInfoW( __in LPWSTR pObjectName, __in SE_OBJECT_TYPE ObjectType, __in SECURITY_INFORMATION SecurityInfo, __out_opt PSID * ppsidOwner, __out_opt PSID * ppsidGroup, __out_opt PACL * ppDacl, __out_opt PACL * ppSacl, __out_opt PSECURITY_DESCRIPTOR * ppSecurityDescriptor );
рддрдм рдХрд┐рд╕реА рдиреЗ
pObjectName рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди
рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ рдХреАрд╡рд░реНрдб рдЬреЛрдбрд╝рдХрд░ рд░рд╛рд╕реНрддреЗ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рджрд┐рдпрд╛ред рдФрд░ aclapi.h рдлрд╝рд╛рдЗрд▓ (6.1.7601.23418-Windows 7.0) рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдорд╛рдкреНрдд рд╣реБрдИ:
WINADVAPI DWORD WINAPI GetNamedSecurityInfoW( __in LPCWSTR pObjectName, __in SE_OBJECT_TYPE ObjectType, __in SECURITY_INFORMATION SecurityInfo, __out_opt const PSID * ppsidOwner, __out_opt const PSID * ppsidGroup, __out_opt const PACL * ppDacl, __out_opt const PACL * ppSacl, __out PSECURITY_DESCRIPTOR * ppSecurityDescriptor );
рдЕрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдерд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ aclapi.h рдХреЗ рдЙрд╕ рдЧрд▓рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдереЗ, рдЬрд┐рд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рдИрдореЗрд▓ рдореЗрдВ рдХреА рдереАред рдореИрдВ рдмрдЧ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╣рд╛рд▓ рд╣реА рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рд╡рд░рдг рдирд╡реАрдирддрдо aclapi.h рдлрд╝рд╛рдЗрд▓ (6.3.9600.17415-Windows_8.1) рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИред
WINADVAPI DWORD WINAPI GetNamedSecurityInfoW( _In_ LPCWSTR pObjectName, _In_ SE_OBJECT_TYPE ObjectType, _In_ SECURITY_INFORMATION SecurityInfo, _Out_opt_ PSID * ppsidOwner, _Out_opt_ PSID * ppsidGroup, _Out_opt_ PACL * ppDacl, _Out_opt_ PACL * ppSacl, _Out_ PSECURITY_DESCRIPTOR * ppSecurityDescriptor );
PObjectName рддрд░реНрдХ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЕрднреА рднреА рд╡рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд
рдХрд╛рд╕реНрдЯ рдЪрд▓реЗ рдЧрдП рд╣реИрдВред рд╕рдм рдлрд┐рд░ рд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБ рдЕрднреА рднреА рдХрд╣реАрдВ рдмрд╛рд╣рд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЯреВрдЯ рд╣реЗрдбрд░ рд╣реИрдВред
рдореИрдВ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╡рд╣ рд╕рдм рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ, рдФрд░ рд╡рд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрдХрд░ рдЦреБрд╢ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЭреВрдареЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реБрдП:
рдореБрдЭреЗ рдЕрдм рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдЯреВрд▓рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдпрд╛рдж рд╣реИред рдбреАрдмрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЯреВрд▓рд╕реЗрдЯ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - "рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 (v141)", рдЬрдмрдХрд┐ рд░рд┐рд▓реАрдЬрд╝ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди "рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2015 - рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдкреА (v140_xp)" рдкрд░ рд╕реЗрдЯ рдерд╛ред рдореИрдВ рдХрд▓ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдИ рджреЗрдЧреА рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧреАредрдмрд╕ рдЗрддрдирд╛ рд╣реАред рдЬрд╛рдВрдЪ рдЦрддреНрдо рд╣реЛ рдЧрдИ рд╣реИред рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рд╣реЗрдбрд░-рдлрд╝рд╛рдЗрд▓ рдмрдЧ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдХреЛрдИ рднреА рдХреАрдЪрдбрд╝ рдирд╣реАрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рд╣реИред "рдХреЗрд╕ рдЦрд╛рд░рд┐рдЬ", рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХ рдЬрдЯрд┐рд▓ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рдж рд╣реИ, рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдХреЛрдб рд╕реЗ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рддрдХрдиреАрдХреЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдЧрд▓рдд рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рд╡рд░рдг рдХреЗ рдХрд╛рд░рдг рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдмрд╣реБрдд рд╕реНрдорд╛рд░реНрдЯ рдирд┐рдХрд▓рд╛ред
рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рдмрдиреЗрдВ, рдФрд░ рдЖрдкрдХреЛ рдореБрдЭрд╕реЗ рдФрд░ рдореЗрд░реЗ рд╕рд╛рдерд┐рдпреЛрдВ рд╕реЗ рд╢реАрдШреНрд░ рдкреЗрд╢реЗрд╡рд░ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред