SetUserObjectSecurity retourne code erreur 1307

Messages postés
291
Date d'inscription
dimanche 29 mai 2011
Statut
Membre
Dernière intervention
14 octobre 2019
-
Bonjour,


Voici une portion code pour recopier les autorisation NTFS , mais ca ne marche pas à tout les cas.


DWORD info = GROUP_SECURITY_INFORMATION | OWNER_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION;


	

HANDLE fk = INVALID_HANDLE_VALUE;
			
			HANDLE f1 = CreateFileA("c:\\Storage-Test\\acl\\f1.bin", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
			err = GetLastError();
			if (f1 != INVALID_HANDLE_VALUE)
			{
				PSECURITY_DESCRIPTOR ds1 = (PSECURITY_DESCRIPTOR)malloc(4096);

				BOOL bb = FALSE;

				DWORD cc = 0;

				bb = GetUserObjectSecurity(f1, &info, ds1, 4096, &cc);

				CloseHandle(f1);
dump("c:\\tmp\\ACLDATA.BIN", (BYTE*)ds1, cc);
				{
					HANDLE f2 = CreateFileA("c:\\Storage-Test\\acl\\fdf2.bin", GENERIC_ALL, 0, NULL, OPEN_EXISTING, 0, NULL);
					if (f2 != INVALID_HANDLE_VALUE)
					{
						BOOL bb = SetUserObjectSecurity(f2, &info, ds1);
						if (bb == FALSE)
						{
							err = GetLastError(); /////ERR=1307
							printf("SetUserObjectSecurity echec avec code erreur:%d\n", err);
						}

						CloseHandle(f2);
					}
				}

				
				free(ds1);


void dump(char *filename,BYTE *p,DWORD size)
{
	HANDLE f=CreateFile(filename,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);
	WriteFile(f,p,size,NULL,NULL);
	CloseHandle(f);
}


SetUserObjectSecurity me retourne TRUE avec l'erreur 0 , sauf si propriétaire est 'SYSTEM' attribué au fichier c:\\Storage-Test\\acl\\f1.bin", dans ce cas code erreur 1307

Pourquoi ?


J'ai essayer SetKernelObjectSecurity et GetUserObjectSecurity -> même probléme.

Merci.


Configuration: Linux / Firefox 60.0
Afficher la suite