Thema: [C] dumpACL

Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

[C] dumpACL

  Alt 26. Jun 2006, 22:48
Da es ja nun mit Delphi nicht geklappt hat, muss ich wohl oder übe auf C zurückgreifen. Der Cide aus dem Bucjh ist auch wunderbar nur bekomme ich beim Linken ein, zwei Problemchen:

Code:
#include <windows.h>
#include <Sddl.h>
#include <Aclapi.h>
#include <stdio.h>

void _printSid(void* psid) {
   wchar_t* psz;
   if (ConvertSidToStringSid(psid, &psz)) {
      wprintf(psz);
      LocalFree(psz);
   }

}

void _dumpDacl(ACL* pdacl) {
   ACL_SIZE_INFORMATION sizeInfo;
   GetAclInformation(pdacl, &sizeInfo, sizeof sizeInfo, AclSizeInformation);
   for (DWORD i = 0; i < sizeInfo.AceCount; ++i) {
      ACCESS_ALLOWED_ACE* pace;
      GetAce(pdacl, i, (void**)&pace);

      const wchar_t* pszGrantOrDeny;

      switch (pace->Header.AceType) {
      case ACCESS_ALLOWED_ACE_TYPE:
         pszGrantOrDeny = L"grant";
         break;
      case ACCESS_DENIED_ACE_TYPE:
         pszGrantOrDeny = L"deny";
         break;
      default:
         pszGrantOrDeny = L"<<unexpected ace type>>";
         break;
      }

      wprintf(L"%s 0x%08 (inh: %X) to ", pszGrantOrDeny, pace->Mask, pace->Header.AceFlags);
      _printSid(&pace->SidStart);
      wprintf(L"\n");
   }

}

int main(int argc, char **argv)
{
   wprintf(L"%s", argv[0]);

   PACL* dacl;
   PSECURITY_DESCRIPTOR* ppSecurityDescriptor;
   GetNamedSecurityInfo(argv[0], SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, dacl, NULL, ppSecurityDescriptor);
   _dumpDacl(dacl);   

    return 0;
}
Und die Meldungen:
Zitat:
E:\C\Programme\GetACL\dumpacl.cpp(8) : error C2065: 'ConvertSidToStringSid' : nichtdeklarierter Bezeichner
E:\C\Programme\GetACL\dumpacl.cpp(50) : error C2664: '_dumpDacl' : Konvertierung des Parameters 1 von 'struct _ACL ** ' in 'struct _ACL *' nicht moeglich
Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
Fehler beim Ausführen von cl.exe.
Die Libs:
Code:
kernel32.lib Advapi32.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/GetACL.pdb" /debug /machine:I386 /out:"Debug/GetACL.exe" /pdbtype:sept
Verwenden tue ich das VC6
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat