IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Erreur windows 'ERROR_INVALID_OWNER' 1307


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 915
    Points : 85
    Points
    85
    Par défaut Erreur windows 'ERROR_INVALID_OWNER' 1307
    Bonjour,

    Une portion code pour recopier les autorisation NTFS , mais....



    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    DWORD info = GROUP_SECURITY_INFORMATION | OWNER_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION;

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    			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);

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    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".

    Pourquoi ?

    J'ai joint le fichier ACLDATA.BIN zippe

    Merci.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Je suis surpris que SetUserObjectSecurity() réussisse, les fichiers n'étant pas des objets USER... As-tu essayé avec SetKernelObjectSecurity()?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 915
    Points : 85
    Points
    85
    Par défaut
    même problème avec la fonction SetKernelObjectSecurity tester hier.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Avec quels privilèges tournes-tu? Il faut le privilège Restore (SE_RESTORE_NAME) actif pour pouvoir changer le propriétaire d'un fichier vers quelqu'un d'autre que toi.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 915
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Avec quels privilèges tournes-tu? Il faut le privilège Restore (SE_RESTORE_NAME) actif pour pouvoir changer le propriétaire d'un fichier vers quelqu'un d'autre que toi.
    Projet lancé en tant qu'administrateur . mais comment fixer le privilége 'se_restore_name' ?

    Merci

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Si tu lances le projet en tant qu'admin, tu remplis au moins le prérequis d'avoir le privilège, qui est nécessaire pour l'activer.
    Cette page contient un code permettant d'activer/désactiver un privilège qu'on possède:
    Enabling and Disabling Privileges in C++
    Utilise la fonction OpenProcessToken() pour obtenir le HANDLE que la fonction attend.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 915
    Points : 85
    Points
    85
    Par défaut
    Tester,
    c'est bon.

    Probléme résolut.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rapport d'erreurs Windows
    Par SteelBox dans le forum Windows
    Réponses: 12
    Dernier message: 22/08/2005, 17h34
  2. pleeeeeins de polys et erreur windows...
    Par Antickriszt dans le forum OpenGL
    Réponses: 3
    Dernier message: 28/06/2005, 14h30
  3. Message erreur Windows 16 bits
    Par francis m dans le forum Windows XP
    Réponses: 2
    Dernier message: 24/04/2005, 16h29
  4. Message d'erreur Windows lors de l'exécution de l'appli D6-
    Par kolac dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/12/2004, 17h55
  5. Erreur windows lors du malloc
    Par Elessar dans le forum C
    Réponses: 5
    Dernier message: 16/12/2003, 08h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo