![]() |
Re: [C] dumpACL
Code:
#define WINVER 0x0500
#define _WIN32_WINNT 0x0500 //#define NONAMELESSUNION //#define WIN32_LEAN_AND_MEAN #include <windows.h> #include <aclapi.h> #include <sddl.h> #include <stdio.h> #include <tchar.h> void PrintSid( PSID a_pSid ) { LPTSTR pszStringSid; if( ConvertSidToStringSid( a_pSid, &pszStringSid ) ) { _tprintf( TEXT("%s"), pszStringSid ); LocalFree( (HLOCAL)pszStringSid ); } } void DumpACL( PACL a_pAcl ) { ACL_SIZE_INFORMATION Info; if( GetAclInformation( a_pAcl, &Info, sizeof(ACL_SIZE_INFORMATION), AclSizeInformation ) ) { DWORD i; for( i = 0; i < Info.AceCount; i++ ) { LPVOID pAce; if( GetAce( a_pAcl, i, &pAce ) ) { LPCTSTR pszType; PACE_HEADER pHead = (PACE_HEADER)pAce; switch( pHead->AceType ) { case ACCESS_ALLOWED_ACE_TYPE: pszType = TEXT("allow"); break; case ACCESS_DENIED_ACE_TYPE: pszType = TEXT("deny"); break; case SYSTEM_AUDIT_ACE_TYPE: pszType = TEXT("audit"); break; case SYSTEM_ALARM_ACE_TYPE: pszType = TEXT("alarm"); break; default: pszType = TEXT("<unknwon>"); break; } PACCESS_ALLOWED_ACE pAccess = (PACCESS_ALLOWED_ACE)pAce; _tprintf( TEXT("%s %8.8x (flags: %2.2x) to "), pszType, pAccess->Mask, pHead->AceFlags); PrintSid( (PSID)(&pAccess->SidStart) ); _tprintf( TEXT("\n") ); } } } } int _tmain(int argc, _TCHAR* argv[]) { if( 2 == argc ) { PACL pAcl; PSECURITY_DESCRIPTOR pSecurityDescriptor; _tprintf( TEXT("%s\n"), argv[0] ); if( ERROR_SUCCESS == GetNamedSecurityInfo( argv[0], SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &pAcl, NULL, &pSecurityDescriptor ) ) { DumpACL( pAcl ); LocalFree( (HLOCAL)pSecurityDescriptor ); } } return 0; } Zitat:
|
Re: [C] dumpACL
Dank dir auch noch mal für deine Mühe.
Zitat:
|
Re: [C] dumpACL
Delphi-Quellcode:
PSID(Addr(Ace.SidStart))
|
Re: [C] dumpACL
Perfekt. :thumb:
|
Re: [C] dumpACL
Moin Michael,
da hättest Du Dir ja mal meinen Quelltext ansehen können... ;-) Zitat:
:mrgreen: Aber im Ernst: Irgendwie war das da bei mir noch nicht so durchgedrungen |
Re: [C] dumpACL
Hach, ich bin immer wieder begeistert von diesem Forum mit seiner Community. :P
|
Re: [C] dumpACL
@Nico: Welche zwei Parameter erwartet deine C Version?
|
Re: [C] dumpACL
Zitat:
(ich hatte ursprünglich den Dateinamen als Parameter übergeben - argv[1]) |
Re: [C] dumpACL
Und jetzt? Einfach das if löschen?
|
Re: [C] dumpACL
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz