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. |