000
12.07.2006, 15:02 Uhr
Epic
|
Hi,
Diesen Eintrag habe ich ja schon gesehen:
www.fun-soft.de/showtopic.php?threadid=1223
Man kommt auf keine Lösung da. Ich habe genau das Problem wie Alexander hatte. Deswegen möchte ich erneut fragen ob einer vielleicht ne Lösung dafür hätte? Es scheint egal zu sein wie ich den Speicher alloziere, oder wie groß er ist - es schlägt einfach fehl. Die Lösung muss in C programmiert werden.
Code: |
void display_acl_info(char * file){ /*GetFileSecurity Vars*/ LPCTSTR lpFileName=NULL; BYTE * buffer=NULL; SIZE_T sizeSD=0; PSECURITY_DESCRIPTOR pSecurityDescriptor = NULL;
lpFileName= file;
//First Call to GetFileSecurity gets the size needed for the security descriptor GetFileSecurity(lpFileName, OWNER_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION, 0, 0, &sizeSD); //Allocate the space (ok) I get the value '172' back from this pSecurityDescriptor = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeSD); //+++problem+++ if(!GetFileSecurity( lpFileName, OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION, pSecurityDescriptor, sizeSD, &sizeSD)) //this does not complete successfully -> "The data area passed to a system call is too small" printError("GetFileSecurity", GetLastError()); return; }
|
Ich kompiliere das mit Visual Studio 2005 command line nmake.
Alle Beispiele, die ich bei MSDN gefunden habe sehen auch ähnlich aus. Ich bedanke mich im Voraus für die Hilfe! :-)
Epic Dieser Post wurde am 12.07.2006 um 15:49 Uhr von FloSoft editiert. |