рд╣рдорд╛рд░реА рдЯреАрдо рддреЗрдЬ рдФрд░ рдХреБрд╢рд▓ рдЧреНрд░рд╛рд╣рдХ рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдХреЗрд╡рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕рдорд░реНрдерди рдореЗрдВ рднрд╛рдЧ рд▓реЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рднреА рд╕рд╡рд╛рд▓ рдкреВрдЫрддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд╣рд╛рд▓ рдХреЗ рд╕рдорд░реНрдерди рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдкрддреНрд░ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╣рдо рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдХреНрд╕рд░ рддреНрд░реБрдЯрд┐ рд╕реЗ рд╕рд╣реА рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдмрд╕ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдирддреАрдЬрддрди, рд╡реИрд╕реЗ рднреА рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛рдПрдВ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдкрд╛рд╕ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЬрд╣рд╛рдВ
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 рдЪрд░ рдХреЗ рдорд╛рди рдХреЛ
рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрддрдиреА рд╕рд░рд▓ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рдереЗ? рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдпрд╛ рддреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдЙрдкрдХрд░рдг рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдмрдЧ рд╣реЛ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдЕрд╕рд┐рдВрдЪрд┐рдд рдЪрд░?
рдПрд╣ ... рд╕реНрдереИрддрд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЖрд╕рд╛рди рдХрд╛рдо рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХрд░реВрдВ, рдореИрдВрдиреЗ рдЦреБрдж рдРрд╕реА рдХрд┐рд╕реНрдордд рдЪреБрдиреАред рдЕрдкрдиреА рдЖрд╕реНрддреАрди рдХреЛ рд░реЛрд▓ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЭреВрдареЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреЗ рдХрд╛рд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рд╛ред
рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
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 );
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐
ppDacl рдХреЗ рд▓рд┐рдП рдФрдкрдЪрд╛рд░рд┐рдХ рддрд░реНрдХ рдХреЛ
рдХрд╛рд╕реНрдЯ рдХреЗ рд░реВрдк
рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
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 6.0):
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 рд╕рдорд╛рди рд░рд╣рд╛, рд▓реЗрдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд
рдХрд╛рд╕реНрдЯ рд╣рдЯрд╛ рджрд┐рдпрд╛
рдЧрдпрд╛ рдерд╛ред рд╕рдм рдХреБрдЫ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд▓реМрдЯ рдЖрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧрд▓рдд рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛рдУрдВ рд╡рд╛рд▓реА рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реЗрдВ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд░рд╣рддреА рд╣реИрдВред
рдпрд╣ рд╕рдм рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВред рд╡рд╣ рдкреНрд░рд╕рдиреНрди рдФрд░ рдкреНрд░рд╕рдиреНрди рд╣реИ рдХрд┐ рд╕реНрдерд┐рддрд┐ рд╕рд╛рдл рд╣реЛ рдЧрдИ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╣ рдЗрд╕ рдХрд╛рд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдпрд╛ рддреЛ рдЭреВрдареЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ:
рдореИрдВ рднреВрд▓ рдЧрдпрд╛ рдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдЯреВрд▓рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред рдбреАрдмрдЧ рдЯреЗрд╕реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ Visual Studio 2017 - "Visual Studio 2017 (v141)" рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЯреВрд▓рд╕реЗрдЯ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░рд┐рд▓реАрдЬрд╝ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди "Visual Studio 2015 - Windows XP (v140_xp)" рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрд▓, рдореИрдВрдиреЗ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдИ рджреА рдФрд░ рдЧрд╛рдпрдм рд╣реЛ рдЧрдИредрд╡рд╣ рд╕рдм рд╣реИред рдЖрдк рдЬрд╛рдВрдЪ рдХрд╛ рдЕрдВрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдмреИрдХрдЕрдк рдирд╣реАрдВ рдмрдирд╛рдПрдВрдЧреЗ, рддрд╛рдХрд┐ рдпрд╣ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрд╕ рдмрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдЕрдм рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, "рдорд╛рдорд▓рд╛ рдмрдВрдж рд╣реИред"
рдирд┐рд╖реНрдХрд░реНрд╖PVS-Studio рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдПрдХ рдЬрдЯрд┐рд▓ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рдж рд╣реИ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рддрдХрдиреАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдЕрддреНрдпрдзрд┐рдХ рдмреБрджреНрдзрд┐рдорддреНрддрд╛ рдиреЗ рдЗрд╕ рддрдереНрдп рдХреЛ рдЬрдиреНрдо рджрд┐рдпрд╛ рд╣реИ рдХрд┐, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЧрд▓рдд рд╡рд┐рд╡рд░рдг рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рдПрдХ рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЙрддреНрдкрд╛рджрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рдмрдиреЗрдВ рдФрд░ рдЖрдк рдореБрдЭреЗ рдФрд░ рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рд╕реЗ рддреЗрдЬреА рд╕реЗ, рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред
рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдПрдВрдбреНрд░реЗ рдХрд╛рд░рдкреЛрд╡ред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ: рдХреИрд╕реЗ рдЦрд░рдЧреЛрд╢ рдЫреЗрдж рдЧрд╣рд░рд╛ рдЬрд╛рддрд╛ рд╣реИ ред