Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Windows Sicherheit (filesecurity)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
09.01.2003, 13:46 Uhr
Alexander L.



Hallo ,

hätte da eine kleine frage betreffend "Filesecurity" (nur NTFS)

möchte die sicherheitseinstellungen (rechte bei den ordnern/files) mit meiner software abfragen.
zwar wird da von windows schon eine nette funktion "GetFileSecurity(....)" zu verfügung gestellt, aber egal was ich anstelle, die fkt. gibt mir nix gescheides zurück. wahrscheinlich initialisiere ich was falsch ????

könnte mir bitte jemand gaaaanz dringend die sourcen von einem kleinem bsp. für die richtige verwendung dieser fkt. schicken.

DANKE
;-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.01.2003, 14:00 Uhr
void*
Generic Pointer
(Operator)


Hallo!

Hast Du denn auch die entsprechenden Privilegien für Deine Verzeichnisse/Dateien (s.a. MSDN)?
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.01.2003, 14:09 Uhr
Alexander L.



ja klar,

bin als admin eingeloggt und hab mir folgenden ordner angelegt:

ctest\x

wobei ich x verschiedene schreib und leserechte zugewiesen habe. nachfolgend mein code:


C++:
BOOL CSecurityDlg::CheckSecurity()
{
    PSECURITY_DESCRIPTOR pSD;
    DWORD lpnTemp;
    SECURITY_INFORMATION Sec_Info;
    DWORD x;

    Sec_Info = 0;

    pSD = (PSECURITY_DESCRIPTOR) LocalAlloc(LPTR, 255);
    if (pSD == NULL) {
            MessageBox("Error LocalAlloc");
            return FALSE;
    }

    if (!InitializeSecurityDescriptor(pSD,  
                  SECURITY_DESCRIPTOR_REVISION)) {
            MessageBox("Initialize");
            return FALSE;
    }

    if (IsValidSecurityDescriptor(pSD))
        x = GetSecurityDescriptorLength(pSD);
    
    if (GetFileSecurity("C:\\test\\x", DACL_SECURITY_INFORMATION,
                   pSD,    255, &lpnTemp))
    {
        return TRUE;
    }

    PVOID lpMsgBuf;

    FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
                   FORMAT_MESSAGE_FROM_SYSTEM,
                   NULL, GetLastError(),
         MAKELANGID(LANG_NEUTRAL,
         SUBLANG_DEFAULT),
         (LPTSTR) &lpMsgBuf,
         0,
         NULL);

    MessageBox((LPTSTR) lpMsgBuf);
    LocalFree( lpMsgBuf );

    return FALSE;
}



die funktion "GetFileSecurity" wird auch ordnungsgemäß ausgeführt. er schreibt mir nur in den letzten parameter immer rein, dass zuwenig mein PSECURITY_DESCRIPTOR zu klein ist. ändere ich beim allozieren die größe schreibt er mir jedoch immer noch den gleichen wert in den letzten parameter ( wieviel byte er nochbenötigt)

Dieser Post wurde am 09.01.2003 um 14:11 Uhr von Alexander L. editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.01.2003, 14:51 Uhr
void*
Generic Pointer
(Operator)


Hallo!

Sollte das nicht einfach so gehen:

C++:
char *fileName="c:\\xyz";
SECURITY_DESCRIPTOR secDesc;
DWORD req;
GetFileSecurity(fileName, DACL_SECURITY_INFORMATION, &secDesc, sizeof(secDesc), &req);


--
Gruß
void*

Dieser Post wurde am 09.01.2003 um 14:52 Uhr von void* editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.01.2003, 15:00 Uhr
Alexander L.



Hallo!

nein leider nicht. dann retourniert die fkt. false

unter GetLastError() erhaltet man dan:
"The data area passed to a system call is to small"

Gruß
Alex
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.01.2003, 15:24 Uhr
void*
Generic Pointer
(Operator)


Versuch's mal so:


C++:
  char *fileName="c:\\xyz";
  SECURITY_DESCRIPTOR *secDesc;
  DWORD req;

  GetFileSecurity(fileName, DACL_SECURITY_INFORMATION, 0, 0, &req);
  
  secDesc=(SECURITY_DESCRIPTOR *)malloc(req);

  if(0==GetFileSecurity(fileName, DACL_SECURITY_INFORMATION, secDesc, req, &req))
  {
    MessageBox(0, "Failure", "Error", MB_ICONERROR);  
  }
  else
  {
    MessageBox(0, "It worked", "Success", MB_ICONINFORMATION);
  }


--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
09.01.2003, 15:31 Uhr
void*
Generic Pointer
(Operator)


Liegt wohl hieran:


Zitat:

A security descriptor can be in absolute or self-relative form. In self-relative form, all members of the structure are located contiguously in memory. In absolute form, the structure only contains pointers to the members.


--
Gruß
void*

Dieser Post wurde am 09.01.2003 um 15:31 Uhr von void* editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
09.01.2003, 16:02 Uhr
Alexander L.



Das Zitat hab ich auch schon gelesen, aber wenn ich das mit deinem Codesegment von oben probier (self-relative) erhalte ich im SECURITY_DES. nur Nullpointer und wederum bei der letzten Variable die fehlenden BYTE

Gruß
Alex
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
09.01.2003, 16:15 Uhr
void*
Generic Pointer
(Operator)


Hallo Alexander,

ich habe es jetze ausprobiert. Bei mir funzt die 2. Version (die 1. nicht...). Ich kriege das struct und die DACL-Info gefüllt.
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
09.01.2003, 16:39 Uhr
Alexander L.



Hab mir den Code von dir 1 zu 1 in mein Programm copiert
(außer filename)

aber dann liefert mir die fkt. beim 2. aufruf wieder folgenden fehler:
"The data area passed to a system call is to small"

langsam aber doch verzweifel ich mit dieser fkt.

vielleicht weist du woran das liegen kann?

DANKE
GRUß
ALEX
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: