Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [C] dumpACL (https://www.delphipraxis.net/72193-%5Bc%5D-dumpacl.html)

NicoDE 27. Jun 2006 10:18

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:

Zitat von Luckie
Aber pace.SidStart ist ein Cardinal, wie komme ich denn jetzt an den Namen dran?

SidStart ist das erste DWORD der SID. Demzufolge: (PSID)&pace->SidStart

Luckie 27. Jun 2006 10:44

Re: [C] dumpACL
 
Dank dir auch noch mal für deine Mühe.

Zitat:

SidStart ist das erste DWORD der SID. Demzufolge: (PSID)&pace->SidStart
Und wie sähe das in Delphi aus? In C sieht mir das ja schon äußerst suspekt aus.

NicoDE 27. Jun 2006 10:46

Re: [C] dumpACL
 
Delphi-Quellcode:
PSID(Addr(Ace.SidStart))

Luckie 27. Jun 2006 10:57

Re: [C] dumpACL
 
Perfekt. :thumb:

Christian Seehase 27. Jun 2006 14:22

Re: [C] dumpACL
 
Moin Michael,

da hättest Du Dir ja mal meinen Quelltext ansehen können... ;-)

Zitat:

Zitat von Luckie
Willst du mich jetzt ärgern? :mrgreen:

JA JA JA :twisted:

:mrgreen:

Aber im Ernst: Irgendwie war das da bei mir noch nicht so durchgedrungen

Luckie 27. Jun 2006 15:08

Re: [C] dumpACL
 
Hach, ich bin immer wieder begeistert von diesem Forum mit seiner Community. :P

Luckie 27. Jun 2006 16:04

Re: [C] dumpACL
 
@Nico: Welche zwei Parameter erwartet deine C Version?

NicoDE 27. Jun 2006 16:20

Re: [C] dumpACL
 
Zitat:

Zitat von Luckie
@Nico: Welche zwei Parameter erwartet deine C Version?

Ist einfach ein 'Bug' :)
(ich hatte ursprünglich den Dateinamen als Parameter übergeben - argv[1])

Luckie 27. Jun 2006 16:30

Re: [C] dumpACL
 
Und jetzt? Einfach das if löschen?

NicoDE 27. Jun 2006 18:07

Re: [C] dumpACL
 
Zitat:

Zitat von Luckie
Und jetzt? Einfach das if löschen?

Genau.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr.
Seite 2 von 3     12 3      

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